Qt:QButtonGroup的QList

时间:2009-05-25 10:33:16

标签: c++ qt linked-list

喂!我尝试做以下

    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组?

3 个答案:

答案 0 :(得分:3)

QButtonGroup :: button函数返回特定ID的按钮,但是当您将按钮添加到buttongroup时,您没有使用id。 QButtonGroup ::按钮在您的示例中返回0,从而导致空指针访问异常。

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

如果您将代码更改为

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

原始代码可以使用。

我更喜欢QList :: at QList :: operator []因为您不想更改列表中的值(==指针)。

答案 1 :(得分:1)

我认为问题与函数at有关。它返回一个const项,并且您正在调用其中的非const函数。

改为使用operator[]

答案 2 :(得分:0)

好的,我解决了这个问题:

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

没有真正得到你的问题。