喂!我尝试做以下
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组?
答案 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);
没有真正得到你的问题。