2012-12-12 34 views
0

的大小我有我的main.cpp中心这样一个主窗口:2 QMainWindow的胶 - 布局

int main(int argc, char *argv[]) 
{  
    QApplication app(argc, argv); 
    QMainWindow *qmain = new QMainWindow; 
    Ui_MainWindow ui; 
    ui.setupUi(qmain); 
    QRect r = qmain->geometry(); 
    r.moveCenter(QApplication::desktop()->availableGeometry().center()); 
    qmain->setGeometry(r); 
    qmain->show(); 
    return app.exec(); 
} 

在这个“QMAIN”主窗口中,我可以创建另一个的QMainWindow和我尽量让(或者我不知道该怎么说)这两个窗口。其实,我希望第一个的右上角位于第二个的左上角。对于这一点,我用下面的Ui_MainWindow的成员函数:

void Ui_MainWindow::generate_IC() 
{ 
qmenu = new QMainWindow; 
DiskMenu = new Ui_DiskGalMenu; 
DiskMenu->setupUi(qmenu); 
setInitialDiskMenuPosition(qmenu, this); 
qmenu->show(); 
} 

和setInitialDiskMenuPosition:

void Ui_MainWindow::setInitialDiskMenuPosition(QMainWindow *MainWindow, Ui_MainWindow *parent) 
{ 
     QSize size = parent->widget->size(); 
     QDesktopWidget* desktop = QApplication::desktop(); 
     int width = desktop->width(); 
     int height = desktop->height(); 
     int mw = size.width(); 
     int mh = size.height(); 
     int right = (width/2) + (mw/2); 
     int top = (height/2) - (mh/2); 
     MainWindow->move(right, top); 
} 

但问题是,我不明白正是我想要的,因为centralwidget大小“父 - > widget-> size()“只返回小部件的大小,而不是整个”qmain“父窗口。所以我有一个光的变化,因为在“主MOS”窗口的边框不考虑采取类似如下的:

enter image description here

如果我能有机会到整个父窗口的大小.. 。

如果有人可以帮助我

回答

0

根据需要使用父 - >小窗口> frameGeometry()文档。大小(),而不是父母与>小窗口>尺寸()

+0

即使parent-> widget-> frameGeometry()。size(),这是行不通的。我在Debian Squeeze GNU/Linux上。 – youpilat13

+0

来自文档:“在窗口装饰后,X11没有提供标准或简单的方法来获得框架几何体,Qt通过巧妙的启发式和聪明的代码解决了这个问题,它适用于当今存在的各种各样的窗口管理器。如果你发现一个QWidget :: frameGeometry()返回错误的结果,会感到惊讶。“ – PSyton