3

我在将 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]);
        }
    }

所以我该怎么做?!

4

1 回答 1

7

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

父小部件参数默认为nullptr,这是您可以接受的,因为布局获得了它的所有权。

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

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

于 2013-03-26T10:19:23.880 回答