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 に答える