Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Odyssey от Декабрь 04, 2012, 07:59



Название: Не проходят сигналы кнопки-выключателя
Отправлено: 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, но такое не всегда удобно.
Есть ли решение проблемы? )


Название: Re: Не проходят сигналы кнопки-выключателя
Отправлено: Bepec от Декабрь 04, 2012, 08:18
Это не проблема.

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

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

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

:)

Сигналы издаются после действий пользователя. А вы меняете программно сами и сами же жалуетесь, что вы не оповещаетесь о событии :)


Название: Re: Не проходят сигналы кнопки-выключателя
Отправлено: arhohryakov от Декабрь 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() сигнал не вызывается. => Вызываем сами.


Название: Re: Не проходят сигналы кнопки-выключателя
Отправлено: Odyssey от Декабрь 04, 2012, 08:58
Благодарю! ))


Название: Re: Не проходят сигналы кнопки-выключателя
Отправлено: GreatSnake от Декабрь 04, 2012, 10:28
Есть ли решение проблемы? )
Код
C++ (Qt)
void QAbstractButton::toggled ( bool checked ) [signal]