2013-08-26 4 views
0

В моем проекте у меня есть QButtonGroup с 256 кнопками. Я также дал каждой кнопке идентификатор так:Петля через все кнопки в QButtonGroup

void MainWindow::AddBlocksToGroup() 
{ 
    QButtonGroup* blockGroup = new QButtonGroup(this); 
    blockGroup->addButton(ui->Oblock_0, 0); 
    ... 
    blockGroup->addButton(ui->Oblock_255, 255); 
} 

Я пытаюсь Переберите все кнопки в группе и изменить их текст, но я продолжаю получать ошибки, когда моя программа достигает ту часть, где I цикл через кнопку , Это то, что я в настоящее время перебрать их:

for(int i = 0; i <= 255; i++) 
{ 
    blockGroup->button(i)->setText("Test"); //Read access violation? 
} 

Я всегда получаю нарушение прав доступа для чтения в моем цикле, когда моя программа достигнет этой точки. Почему это?

Спасибо за ваше время.

ответ

1

Я хотел бы сделать это для кода итерации:

foreach(QAbstractButton *button, blockGroup->buttons()) { 
    button->setText("Test"); 
} 

Если это все еще дает сбой, то есть что-то еще происходит в вашей программе, которая утрачивает эти кнопки указатели.

+0

Да я все еще получаю ошибки. Тогда что еще может быть? Правильно ли я добавил кнопки в группу? Кроме того, я добавил QButtonGroup * blockGroup; публичному классу mainwindow.h – mrg95

-1

Вы, кажется, создаете локальную переменную с именем blockGroup в своей функции AddBlocksToGroup(). Возможно, что вы пытаетесь сделать, это инициализировать переменную-член MainWindow, которая использует одно и то же имя?

Таким образом, вместо: QButtonGroup* blockGroup = new QButtonGroup(this);

вы должны сделать: blockGroup = new QButtonGroup(this);

Смежные вопросы