首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环访问QButtonGroup中的所有按钮

循环访问QButtonGroup中的所有按钮
EN

Stack Overflow用户
提问于 2013-08-26 12:26:55
回答 3查看 2.3K关注 0票数 0

在我的项目中,我有一个带有256个按钮的QButtonGroup。我还为每个按钮分配了一个id,如下所示:

代码语言:javascript
复制
void MainWindow::AddBlocksToGroup()
{
    QButtonGroup* blockGroup = new QButtonGroup(this);
    blockGroup->addButton(ui->Oblock_0, 0);
    ...
    blockGroup->addButton(ui->Oblock_255, 255);
}

我试图遍历组中的所有按钮并更改它们的文本,但当我的程序到达遍历按钮的部分时,我总是收到错误。这就是我目前必须遍历它们的内容:

代码语言:javascript
复制
for(int i = 0; i <= 255; i++)
{
    blockGroup->button(i)->setText("Test"); //Read access violation?
}

当我的程序到达这一点时,我总是在我的循环中得到一个读访问冲突。为什么会这样呢?

耽误您时间,实在对不起。

EN

回答 3

Stack Overflow用户

发布于 2013-08-26 12:48:42

对于迭代代码,我会这样做:

代码语言:javascript
复制
foreach(QAbstractButton *button, blockGroup->buttons()) {
    button->setText("Test");
}

如果这仍然使你崩溃,那么在你的程序中有一些其他的东西正在使这些按钮指针失效。

票数 1
EN

Stack Overflow用户

发布于 2018-08-31 11:10:45

我知道已经很久了,你可能已经解决了这个问题。如果不是,可能需要检查blockGroup->buttons()返回值是否为空列表。如果它是一个空的列表,那么你的程序就会崩溃。

票数 0
EN

Stack Overflow用户

发布于 2013-08-26 16:07:12

您似乎要在AddBlocksToGroup()函数中创建一个名为blockGroup的局部变量。也许您正在尝试做的是初始化使用相同名称的MainWindow成员变量?

所以不是:QButtonGroup* blockGroup = new QButtonGroup(this);

你应该这样做:blockGroup = new QButtonGroup(this);

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

https://stackoverflow.com/questions/18436609

复制
相关文章

相似问题

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