在我的项目中,我有一个带有256个按钮的QButtonGroup。我还为每个按钮分配了一个id,如下所示:
void MainWindow::AddBlocksToGroup()
{
QButtonGroup* blockGroup = new QButtonGroup(this);
blockGroup->addButton(ui->Oblock_0, 0);
...
blockGroup->addButton(ui->Oblock_255, 255);
}我试图遍历组中的所有按钮并更改它们的文本,但当我的程序到达遍历按钮的部分时,我总是收到错误。这就是我目前必须遍历它们的内容:
for(int i = 0; i <= 255; i++)
{
blockGroup->button(i)->setText("Test"); //Read access violation?
}当我的程序到达这一点时,我总是在我的循环中得到一个读访问冲突。为什么会这样呢?
耽误您时间,实在对不起。
发布于 2013-08-26 12:48:42
对于迭代代码,我会这样做:
foreach(QAbstractButton *button, blockGroup->buttons()) {
button->setText("Test");
}如果这仍然使你崩溃,那么在你的程序中有一些其他的东西正在使这些按钮指针失效。
发布于 2018-08-31 11:10:45
我知道已经很久了,你可能已经解决了这个问题。如果不是,可能需要检查blockGroup->buttons()返回值是否为空列表。如果它是一个空的列表,那么你的程序就会崩溃。
发布于 2013-08-26 16:07:12
您似乎要在AddBlocksToGroup()函数中创建一个名为blockGroup的局部变量。也许您正在尝试做的是初始化使用相同名称的MainWindow成员变量?
所以不是:QButtonGroup* blockGroup = new QButtonGroup(this);
你应该这样做:blockGroup = new QButtonGroup(this);
https://stackoverflow.com/questions/18436609
复制相似问题