0

おい!私は次のことをしようとします

    QList<QButtonGroup*> groups;
    for (int i=0; i<nGroup; i++)
    {
        QButtonGroup *objects = new QButtonGroup(this);
        objects->setExclusive(false);
        for (int j=0; j<nObject; j++)
        {
            Led *tempLed = new Led();
            tempLed->setAutoExclusive(false);
            layout->addWidget(tempLed,j,i,Qt::AlignLeft);
            objects->addButton(tempLed);
        }
        groups.append(objects);
    }

そして、次のようなことを試してください。

groups.at(1)->button(2)->setChecked(true);

コードはコンパイルされますが、実行時に未処理の例外がスローされます。私は何が間違っているのですか?QButtonGroupのグループを作成するためのより良い方法はありますか?

4

3 に答える 3

3

QButtonGroup :: button関数は、特定のIDのボタンを返しますが、ボタンをボタングループに追加したときにIDを使用しませんでした。QButtonGroup :: buttonは、例では0を返し、nullポインターアクセス例外を引き起こします。

...
objects->addButton(tempLed);
...

コードをに変更した場合

...
objects->addButton(tempLed, j );
...

元のコードが機能します。

リスト内の値(==ポインター)を変更したくないので、QList ::operator[]よりもQList::atの方が好きです。

于 2009-05-25T14:16:10.680 に答える
1

問題はでの関数に関連していると思います。constアイテムを返し、その中のnon-const関数を呼び出しています。

代わりにoperator[]を使用してください。

于 2009-05-25T11:34:42.220 に答える
0

OK、私はそれを次のように解決しました:

QButtonGroup *bG;
bG = groups[gr];
QAbstractButton *aB = bG->buttons()[obj];
aB->setChecked(command);

何が問題だったのか本当にわかりませんでした。

于 2009-05-25T10:59:56.067 に答える