Russian Qt Forum
Ноябрь 01, 2024, 12:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QButtonGroup  (Прочитано 5141 раз)
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(). Как я понимаю он должен вызываться, если любая из кнопок была чекенута. Если нет то подскажите как правильно сделать. Уже весь ассистант перерыл...

Заранее спасибо.
« Последнее редактирование: Август 04, 2010, 05:54 от Ovoshlook » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 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)
{
 
}
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Ovoshlook
Гость
« Ответ #2 : Август 05, 2010, 18:39 »

о) Спасибо!!) Все понял)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.139 секунд. Запросов: 23.