简体   繁体   English

如何设置gtkmm窗口在屏幕中央打开?

[英]how to set gtkmm window to open in the centre of the screen?

I am trying make my windows in GTKmm open in the centre of the screen and I can't find a working solution anywhere online. 我正在尝试让我在GTKmm的窗口在屏幕中央打开,我无法在网上找到一个可行的解决方案。 Any insights? 任何见解?

I have been trying everything I can think of with no results... 我一直在尝试我能想到的一切,没有结果......

Here is my code: 这是我的代码:

#include "viewMenu.h"
#include <iostream>
#include <fstream>
#define MAX_BUF 10

viewMenu::viewMenu()
: frmMenu("cuTAES Review Menu"), 
  lblChooser("Select Course : "), 
  lblCourses(""),
  lblView(" View "),
 lblAppInfo(" Application Info "), 
  lblStuInfo(" Student Info "), 
  btnView(" View this Application "), 
  btnBack(" Back "),
  frameTable(4,4,true)
{
  set_title("cuTAES Review Menu ");
  //set_border_width(50);
  add(frameTable);

  window.set_position(Gtk::WIN_POS_CENTER);

  //frmMenu.add(lblChooser);
  //frameTable.attach(frmMenu,0,1,0,0);

  frameTable.attach(lblChooser, 1,2,0,1);
  char text[MAX_BUF];
  std::ifstream inFile("courses.txt", std::ios::in);
  if(!inFile){
    exit(1);
  }
  while(!inFile.eof()) {
    inFile.getline(text,MAX_BUF);
    cboCourse.append(text);
  }

  frameTable.attach(cboCourse, 2,3,0,1);

  //set up my table
  frameTable.attach(lblView, 0,1,0,1);
  frameTable.attach(lblStuInfo, 0,1,1,2);
  frameTable.attach(lblAppInfo, 2,3,1,2);
  btnView.signal_clicked().connect(sigc::mem_fun(*this,&viewMenu::btnView_clicked));
  frameTable.attach(btnView,3,4,0,1);

  btnBack.signal_clicked().connect(sigc::mem_fun(*this, &viewMenu::btnBack_clicked));
  frameTable.attach(btnBack,3,4,3,4);

  show_all_children();
}

and my Header file: 和我的头文件:

#ifndef VIEWMENU_H
#define VIEWMENU_H

#include <gtkmm.h>

class viewMenu : public Gtk::Window
{

public:
  viewMenu();
  virtual ~viewMenu();

protected:
  //Signal handlers:
  void btnView_clicked();

  void btnBack_clicked();

  //Member widgets:
  Gtk::Table frameTable;
  Gtk::Label lblChooser,lblCourses, lblView, lblAppInfo, lblStuInfo, lblCourseDrop;  
  Gtk::Frame frmMenu;
  Gtk::Button btnView, btnBack;
  Gtk::ComboBoxText cboCourse;
  Gtk::Window window;
};

#endif // MAINMENU_H

Your viewMenu class inherits from the Gtk::Window class. 您的viewMenu类继承自Gtk :: Window类。 Simply use the set_position function to set the position of the window. 只需使用set_position函数设置窗口的位置即可。 Instead of: 代替:

window.set_position(Gtk::WIN_POS_CENTER);

Use: 采用:

set_position(Gtk::WIN_POS_CENTER);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM