0

我有一个主窗口,我以这种方式在 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);
}

但问题是我没有得到我想要的,因为中央小部件大小“parent-> widget->size()”只返回小部件的大小,而不是整个“qmain”父窗口。所以我有一个轻微的转变,因为“qmain”窗口的边界没有被考虑在内,如下所示:

enter image description here

If I could have access to the size of the whole parent window...

If anyone could help me

4

1 回答 1

0

According to documentation you need to use parent->widget->frameGeometry().size() instead of parent->widget->size()

于 2012-12-12T05:12:36.693 回答