Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: dangreen от Сентябрь 06, 2011, 16:37



Название: uncheck всех QRadioButton
Отправлено: dangreen от Сентябрь 06, 2011, 16:37
на страничке стекед виджета есть несколько радиобатонов, нужно чтоб по нажатию кнопке все радиобаттаны были пустые(не отмеченые)
если делать по тупому
Код:
    ui->aradio->setChecked(false);
    ui->bradio->setChecked(false);
    ui->cradio->setChecked(false);
    ui->dradio->setChecked(false);
    ui->eradio->setChecked(false);

то нифига не получается, помогите пожалуста  :)


Название: Re: uncheck всех QRadioButton
Отправлено: kambala от Сентябрь 06, 2011, 17:20
вариант 1: создать список кнопок и анчекнуть их в foreach
вариант 2: пройтись по всем детям стекд виджета, посмотреть кто из них является кнопкой и ее анчекнуть


Название: Re: uncheck всех QRadioButton
Отправлено: dangreen от Сентябрь 06, 2011, 18:21
вариант 1: создать список кнопок и анчекнуть их в foreach
вариант 2: пройтись по всем детям стекд виджета, посмотреть кто из них является кнопкой и ее анчекнуть

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


Название: Re: uncheck всех QRadioButton
Отправлено: dangreen от Сентябрь 06, 2011, 18:34
все решилось обходным путем.... тупо создал пассивный радиобаттон который при старте делаю невидимым, и вместо того чтобы все радиобатоны делать анчекнутами делаю пассивный чекнутым и усе  ;D


Название: Re: uncheck всех QRadioButton
Отправлено: kambala от Сентябрь 06, 2011, 18:51
ой, я перепутал радиокнопки с чекбоксами :) теоретически надо все радиокнопки добавить в QButtonGroup и потом вызвать buttonGroup->checkedButton()->setChecked(false), но ты говоришь так не работает...
все решилось обходным путем
это называется хаком :)


Название: Re: uncheck всех QRadioButton
Отправлено: Drafter от Сентябрь 07, 2011, 23:52
Цитировать
это называется хаком
Такие хаки вызывают каки  ;). Зачем плодить невидимок?

Попробуйте что-нибудь вроде:
Код
C++ (Qt)
QList<QRadioButton*> lst = this->findChildren<QRadioButton*>();
foreach(QRadioButton* rbtn, lst) {
    rbtn->setAutoExclusive(false);
    rbtn->setChecked(false);
    rbtn->setAutoExclusive(true);
}

Если используете QButtonGroup, то, перед сбросом радиобаттонов группы, вызовите buttonGroup->setExclusive(false), а потом, после очистки, установите обратно в true.