2013-02-14 120 views
1

我想在GTKmm中打开我的窗口在屏幕中心打开,我无法在任何地方在网上找到工作解决方案。任何见解?如何设置gtkmm窗口在屏幕中央打开?

我一直在试图一切我能想到的,没有结果...

这里是我的代码:

#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(); 
} 

,我的头文件

#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 

回答

2

你viewMenu类继承自Gtk :: Window类。只需使用set_position函数来设置窗口的位置即可。相反的:

window.set_position(Gtk::WIN_POS_CENTER); 

用途:

set_position(Gtk::WIN_POS_CENTER);