嘿!我试着做以下事情
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组?
发布于 2009-05-25 14:16:11
QButtonGroup::button函数返回具有特定ID的按钮,但是在将按钮添加到buttongroup时没有使用id。在您的示例中,QButtonGroup::button返回0,导致空指针访问异常。
...
objects->addButton(tempLed);
...如果您将代码更改为
...
objects->addButton(tempLed, j );
...你的原始代码将会工作。
我更喜欢QList::at而不是QList::operator[],因为您不想更改列表中的值(==pointer)。
发布于 2009-05-25 11:34:42
我认为这个问题与函数at有关。它返回一个const项,而您正在调用其中的一个非常量函数。
请改用operator[]。
发布于 2009-05-25 10:59:56
好的,我是这样解决的:
QButtonGroup *bG;
bG = groups[gr];
QAbstractButton *aB = bG->buttons()[obj];
aB->setChecked(command);你并没有真正明白问题出在哪里。
https://stackoverflow.com/questions/906196
复制相似问题