2012-12-12 40 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