QMainWindowLayout :: addItem:请改用公共QMainWindow API

Kho*_*osi 3 c++ qt

我在向ui添加QPushButton时遇到了问题.我这样做:

    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]);
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以我该怎么做?!

cma*_*t85 6

您正在堆栈上创建一个临时父窗口小部件,并使用它的引用QPushButton- 这是获取段错误的好方法.

父窗口小部件参数默认为nullptr,您可以接受,因为布局取得了它的所有权.

//QWidget wdg;
mine[i][j] = new QPushButton( " " );
Run Code Online (Sandbox Code Playgroud)

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