Необъявленный идентификатор QButtonGroup?

В моем проекте у меня есть 256 кнопок, и я создал функцию, которая добавляет их все в QButtonGroup.

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

Да, я знаю, что есть лучшие способы сделать это, кроме одного за раз, но это делает мой мозг счастливее. ржу не могу

Позже в моей программе (в более поздней функции) я хочу перебрать все кнопки и изменить некоторые параметры для каждой из них. (например, изменение текста)

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

Но я получаю необъявленный идентификатор для blockGroup в своем цикле. Может ли кто-нибудь сказать мне, почему и / или как это исправить?

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


person mrg95    schedule 26.08.2013    source источник


Ответы (1)


Объявите QButtonGroup* blockGroup; членом класса MainWindow вместо того, чтобы объявлять его локальной переменной void MainWindow::AddBlocksToGroup(), и это сделает его доступным из вашей более поздней функции-члена. //не забудьте добавить предварительное объявление для класса QButtonGroup в заголовочный файл MainWindow

person Zlatomir    schedule 26.08.2013
comment
Это решило проблему :) Теперь я получаю сообщение об ошибке, когда пытаюсь изменить текст, но это совсем другая проблема. Спасибо :) - person mrg95; 26.08.2013
comment
Извините, что беспокою вас, у меня возникает неприятная ошибка нарушения доступа для чтения, когда я пытаюсь отредактировать кнопку в группе. Может быть, я что-то пропустил здесь? Я добавил QButtonGroup* blockGroup; в публичном разделе mainwindow.h. Это все, что мне нужно было сделать? - person mrg95; 26.08.2013
comment
На самом деле не в общедоступном разделе, лучше добавить его в раздел private в MainWindow, а в отношении ошибки вы можете отладить свое приложение и посмотреть, что произойдет (особенно см. случай, когда вы пытаетесь перейти перед добавлением кнопок в группу) - person Zlatomir; 26.08.2013
comment
А также есть еще один способ добавить кнопки в группу в дизайнере: выберите все кнопки, которые вы хотите добавить в группу, щелкните правой кнопкой мыши и выберите Назначить группе кнопок (и вы получите доступ к ваша группа кнопок через указатель ui: ui-›btnGprName ) - person Zlatomir; 26.08.2013