0

私のプロジェクトには、256 個のプッシュボタンを含む QButtonGroup があります。また、各ボタンに次のような ID を付けました。

void MainWindow::AddBlocksToGroup()
{
    QButtonGroup* blockGroup = new QButtonGroup(this);
    blockGroup->addButton(ui->Oblock_0, 0);
    ...
    blockGroup->addButton(ui->Oblock_255, 255);
}

グループ内のすべてのボタンをループしてテキストを変更しようとしていますが、プログラムがボタンをループする部分に到達するとエラーが発生し続けます。これは私が現在それらをループしなければならないものです:

for(int i = 0; i <= 255; i++)
{
    blockGroup->button(i)->setText("Test"); //Read access violation?
}

プログラムがこのポイントに到達すると、常にループ内で読み取りアクセス違反が発生します。どうしてこれなの?

御時間ありがとうございます。

4

3 に答える 3

1

私は反復コードに対してこれを行います:

foreach(QAbstractButton *button, blockGroup->buttons()) {
    button->setText("Test");
}

それでもクラッシュが発生する場合は、ボタン ポインタを無効にしている何かがプログラムで発生しています。

于 2013-08-26T04:48:42.237 に答える
-1

blockGroup関数で呼び出されるローカル変数を作成しているようですAddBlocksToGroup()。おそらく、あなたがしようとしてMainWindowいるのは、同じ名前を使用するメンバー変数を初期化することですか?

したがって、代わりに:QButtonGroup* blockGroup = new QButtonGroup(this);

やったほうがいい:blockGroup = new QButtonGroup(this);

于 2013-08-26T08:07:12.193 に答える