Название: [SOLVED] QPushButton toggled(bool) и два сигнала Отправлено: Blayder от Ноябрь 02, 2009, 13:54 Люди добрые, как сделать, что бы сигнал toggle(bool) отрабатывался только при переходе в состояние true, но не отрабатывал бы при переходе в состояние false.
В асистенте нашел некий пример: Цитировать For example, a slot that reacts to signals emitted by newly checked buttons but which ignores signals from buttons that have been unchecked can be implemented using the following pattern: Код
Но что-то я недопонимаю, как его использовать? Просто у меня задачка такая: имеется группа кнопок, обьединенных QButttonGroup, которые по сути работают как переключатели категорий. При переходе одной из кнопок в нажатое состояние, должен будет грузиться виджет с определенным контентом и вся проблема в том, что по сигналу toggled(bool) мой слот отрабатывает дважды - при переходе предыдущей кнопки в состояние false и переходе новой кнопки с состояние true. Как от этого ибавиться? П.С. кнопки создаются уже в процессе создания главного окна и их может быть разное количество. П.П.С. Примеры кода пока не имею возможности привести, ибо пишу с работы. Название: Re: QPushButton toggled(bool) и два сигнала Отправлено: spectre71 от Ноябрь 02, 2009, 14:06 Да уж, великая проблема поставить проверку на false. :)
А вообще не мешало бы иногда смотреть документацию по классам которые используешь. QButtonGroup Signals: void buttonClicked ( QAbstractButton * button ) void buttonClicked ( int id ) void buttonPressed ( QAbstractButton * button ) void buttonPressed ( int id ) void buttonReleased ( QAbstractButton * button ) void buttonReleased ( int id ) Название: Re: QPushButton toggled(bool) и два сигнала Отправлено: Igors от Ноябрь 02, 2009, 14:15 проблема в том, что по сигналу toggled(bool) мой слот отрабатывает дважды - при переходе предыдущей кнопки в состояние false и переходе новой кнопки с состояние true. QActionGroup такими делами занимаетсяКак от этого ибавиться? Название: Re: QPushButton toggled(bool) и два сигнала Отправлено: Blayder от Ноябрь 02, 2009, 14:37 Ну с кликед то работает, даже в том случае, если она уже в состоянии тру и все.
Это все в документации я уже раз 5 перечитал, и проблема не изменилась... Видать надо будет код привести, как вечером приду... Но попробую на словах описать: Есть функция виджета createCategory(QString category) В этой фугкции создается кнопка, вставляется в лэйаут, добавляется в группу кнопок и водключается к слоту, который уже дальше делает свои черные дела... Так вот как мне условно задать срабатывание сигнала тока по тру?... Код Вот примерный код навскидку, что из себя это представляет. Как суда всунуть проверку на переход состояния... Цитировать QActionGroup такими делами занимается Хм... с этим можно поколдовать...Вечером дома попробую связать с кнопками... Название: Re: QPushButton toggled(bool) и два сигнала Отправлено: lit-uriy от Ноябрь 02, 2009, 17:12 >>как сделать, что бы сигнал toggle(bool) отрабатывался только при переходе в состояние true,
ни как, есть сигнал аргумент которого показывает состояние. В слоте храни предыдущее состояние и сравнивай с новым. Название: Re: QPushButton toggled(bool) и два сигнала Отправлено: Blayder от Ноябрь 02, 2009, 17:32 Тогда придется иначе это дело реализовать...
"Решаем головоломки на Qt" :D Спасибо всем за советы! Название: Re: QPushButton toggled(bool) и два сигнала Отправлено: spectre71 от Ноябрь 03, 2009, 10:21 Тогда придется иначе это дело реализовать... "Решаем головоломки на Qt" :D Спасибо всем за советы! Головоломки придумываешь себе сам! Если уж задаешь вопрос, потрудись рассмотреть ответы. Вот тебе один пример. Подобных решений множество. Код
Название: Re: QPushButton toggled(bool) и два сигнала Отправлено: Blayder от Ноябрь 03, 2009, 10:54 Я до такого даж не додумался...
Всетаки учусь на ходу :D Премного благодарен, Spectre. А можно еще маленький вопрос? Цитировать static int prev_id = -1; что делает static? ::)Название: Re: QPushButton toggled(bool) и два сигнала Отправлено: spectre71 от Ноябрь 03, 2009, 11:03 Я до такого даж не додумался... Всетаки учусь на ходу :D Премного благодарен, Spectre. А можно еще маленький вопрос? Цитировать static int prev_id = -1; что делает static? ::)In C, a variable declared as static in a function is initialised once, and retains its value between function calls. The default initial value of an uninitialized static variable is zero. If a function or global variable is declared static, it can only be accessed in that file. Это уже C/C++, изучай язык на котором пишешь. Название: Re: [SOLVED] QPushButton toggled(bool) и два сигнала Отправлено: Blayder от Ноябрь 07, 2009, 16:22 Премного благодарен, получилось оч хорошо.
Еще раз спасибо. |