首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt: QButtonGroup的QList

Qt: QButtonGroup的QList
EN

Stack Overflow用户
提问于 2009-05-25 10:33:16
回答 3查看 2.2K关注 0票数 0

嘿!我试着做以下事情

代码语言:javascript
复制
    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);
    }

然后尝试这样做:

代码语言:javascript
复制
groups.at(1)->button(2)->setChecked(true);

代码会编译,但在运行时会抛出未处理的异常。我做错了什么?有没有更好的方法来创建QButtonGroup组?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-25 14:16:11

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

代码语言:javascript
复制
...
objects->addButton(tempLed);
...

如果您将代码更改为

代码语言:javascript
复制
...
objects->addButton(tempLed, j );
...

你的原始代码将会工作。

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

票数 3
EN

Stack Overflow用户

发布于 2009-05-25 11:34:42

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

请改用operator[]

票数 1
EN

Stack Overflow用户

发布于 2009-05-25 10:59:56

好的,我是这样解决的:

代码语言:javascript
复制
QButtonGroup *bG;
bG = groups[gr];
QAbstractButton *aB = bG->buttons()[obj];
aB->setChecked(command);

你并没有真正明白问题出在哪里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/906196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档