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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не проходят сигналы кнопки-выключателя  (Прочитано 2844 раз)
Odyssey
Гость
« : Декабрь 04, 2012, 07:59 »

Работаю в Линуксе, Qt 4.5.3
Допустим, у нас на форме есть кнопка-выключатель и некий слот, обрабатывающий ее нажатие/отжатие.

connect(ui->checkableButton, SIGNAL(clicked(bool)), this, SLOT(slotButtonClicked(bool)));

В этом случае, если нажать кнопку на форме - сигнал проходит. Но если в каком-нибудь методе выполнить ui->checkableButton->setChecked(true/false), то сигнал не проходит. Конечно, в программе можно сразу же за этим вызвать слот slotButtonClicked, но такое не всегда удобно.
Есть ли решение проблемы? )
Записан
Bepec
Гость
« Ответ #1 : Декабрь 04, 2012, 08:18 »

Это не проблема.

Приведу аналогию.

Мама готовит обед. Притовив посылает сигнал - "КУШААААТЬ."

У вас же.
Сам приготовил обед. И жду до тех пор, пока мама не издаст сигнал "КУШАААТЬ".

Улыбающийся

Сигналы издаются после действий пользователя. А вы меняете программно сами и сами же жалуетесь, что вы не оповещаетесь о событии Улыбающийся
Записан
arhohryakov
Гость
« Ответ #2 : Декабрь 04, 2012, 08:23 »

В документации чётко написано:

void QAbstractButton::clicked ( bool checked = false ) [signal]

This signal is emitted when the button is activated (i.e. pressed down then released while the mouse cursor is inside the button), when the shortcut key is typed, or when click() or animateClick() is called. Notably, this signal is not emitted if you call setDown(), setChecked() or toggle().

Т.е. после setChecked() сигнал не вызывается. => Вызываем сами.
Записан
Odyssey
Гость
« Ответ #3 : Декабрь 04, 2012, 08:58 »

Благодарю! ))
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Декабрь 04, 2012, 10:28 »

Есть ли решение проблемы? )
Код
C++ (Qt)
void QAbstractButton::toggled ( bool checked ) [signal]
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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