我在向 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]);
        }
    }
所以我该怎么做?!

最佳答案

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

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

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

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

关于c++ - QMainWindowLayout::addItem: 请改用公共(public) QMainWindow API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15633709/

10-11 18:11