Russian Qt Forum

Qt => Общие вопросы => Тема начата: Ovoshlook от Август 04, 2010, 05:51



Название: QButtonGroup
Отправлено: Ovoshlook от Август 04, 2010, 05:51
Возник вопрос по данному контейнеру.

Я закинул в него несколько RadioButton (3 штуки).

У ButtonGroup есть 2 метода (сигнала):

buttonClicked ( int )- с этим я разобрался. Здесь работает id кнопки, который присваивается при добавлении кнопки к ButtonGroup
buttonClicked ( QAbstractButton * ) -а вот с этим мне непонятно ничего. Что должно быть в скобках?

Просто задался вопросом из следующих побуждений:
Уменя есть код в котором 3 RadioButton. Посдле того как один из них я чекаю у меня должна активироваться кнопка, которая ранее была недоступна. Конечно есть способ прописать connect для каждой кнопки (скажем вот так):

connect (ScndType, SIGNAL (clicked()), this, SLOT (ChangeEnable()));
connect (ThrdType, SIGNAL (clicked()), this, SLOT (ChangeEnable()));
connect (FrthType, SIGNAL (clicked()), this, SLOT (ChangeEnable()));

но я так понимаю что есть способ сделать это более грамотно через контейнер.
Собственно я добавил кнопки в контейнер QButtonGroup и прописал следующий connect( предыдущие естественно я закоментил):

connect (TypeGroup, SIGNAL (buttonClicked()), this, SLOT (ChangeEnable()));
    //connect (ScndType, SIGNAL (clicked()), this, SLOT (ChangeEnable()));
    //connect (ThrdType, SIGNAL (clicked()), this, SLOT (ChangeEnable()));
    //connect (FrthType, SIGNAL (clicked()), this, SLOT (ChangeEnable()));

Но при вызове слота у меня ничего не работает, а в консоли приложение мне пишется :
Object::connect: No such signal QButtonGroup::buttonClicked().

Не понимаю что не так с сигналом buttonClicked(). Как я понимаю он должен вызываться, если любая из кнопок была чекенута. Если нет то подскажите как правильно сделать. Уже весь ассистант перерыл...

Заранее спасибо.


Название: Re: QButtonGroup
Отправлено: Пантер от Август 04, 2010, 06:39
buttonClicked ( QAbstractButton * ) возвращает тебе указатель на чекнутую кнопку. Коннектишь ты неверно, нужно вот так:

Код
C++ (Qt)
connect (TypeGroup, SIGNAL (buttonClicked(int)), this, SLOT (ChangeEnable(int)));
 
YourClass::ChangeEnable(int idx)
{
 
}
 
Или так:
Код
C++ (Qt)
connect (TypeGroup, SIGNAL (buttonClicked(QAbstractButton *)), this, SLOT (ChangeEnable(QAbstractButton *)));
 
YourClass::ChangeEnable(QAbstractButton *btn)
{
 
}
 


Название: Re: QButtonGroup
Отправлено: Ovoshlook от Август 05, 2010, 18:39
о) Спасибо!!) Все понял)