我有一个主窗口,我在main.cpp中以这种方式居中:
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大小“parent-> widget-> size()”只返回小部件的大小而不是整个“qmain”父窗口。所以我有一个轻微的移位,因为“qmain”窗口的边界不会被考虑在内,如下所示:
如果我可以访问整个父窗口的大小......
如果有人可以帮助我
答案 0 :(得分:0)
根据文档,您需要使用parent-> widget-> frameGeometry()。size()而不是parent-> widget-> size()