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