如何在QMainWindow布局中添加小部件

How to add a widget to QMainWindow layout?

本文关键字:添加 小部 布局 QMainWindow      更新时间:2023-10-16

我使用下面的代码添加一个QPushButton到ui:

    QPushButton *mine[PlayForm->horizontal][PlayForm->vertical];
    for(int i=0; i<PlayForm->horizontal; i++)
    {
        for(int j=0; j<PlayForm->vertical; j++)
        {
            QWidget wdg;
            mine[i][j] = new QPushButton(" ", &wdg);
            mine[i][j]->setGeometry(size*i, size*j, size, size);
            mine[i][j]->show();
            PlayForm->layout()->addWidget(mine[i][j]);
        }
    }

但是我得到这个消息:

QMainWindowLayout::addItem:请使用公共的QMainWindow API代替

我该怎么办?

您正在堆栈上创建一个临时父部件,并为QPushButton使用对它的引用-这是获得段错误的好方法。

父部件参数默认为nullptr,这对您来说是可以接受的,因为布局拥有它。

//QWidget wdg;
mine[i][j] = new QPushButton( " " );

您得到的错误消息是由这个问题回答的。简而言之,这意味着你不应该修改QMainWindow布局;您需要先创建一个小部件,将其添加为中心小部件,然后修改中心小部件的布局。