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」窗口的邊框不考慮採取類似如下的:
如果我能有機會到整個父窗口的大小.. 。
如果有人可以幫助我
即使parent-> widget-> frameGeometry()。size(),這是行不通的。我在Debian Squeeze GNU/Linux上。 – youpilat13
來自文檔:「在窗口裝飾後,X11沒有提供標準或簡單的方法來獲得框架幾何體,Qt通過巧妙的啓發式和聰明的代碼解決了這個問題,它適用於當今存在的各種各樣的窗口管理器。如果你發現一個QWidget :: frameGeometry()返回錯誤的結果,會感到驚訝。「 – PSyton