[英]Qt: QList of QButtonGroup
嘿! 我尝试执行以下操作
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组吗?
QButtonGroup :: button函数返回具有特定ID的按钮,但是在将按钮添加到按钮组时没有使用ID。 QButtonGroup :: button在您的示例中返回0,导致空指针访问异常。
...
objects->addButton(tempLed);
...
如果将代码更改为
...
objects->addButton(tempLed, j );
...
您的原始代码将起作用。
我更喜欢QList :: at而不是QList :: operator [],因为您不想更改列表中的值(== pointer)。
我认为这个问题是与功能相关的 。 它返回一个const项,您正在其中调用一个非const函数。
请改用operator [] 。
好的,我这样解决了:
QButtonGroup *bG;
bG = groups[gr];
QAbstractButton *aB = bG->buttons()[obj];
aB->setChecked(command);
真的没弄清楚问题是什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.