Здравствуйте, гость ( Вход | Регистрация )
flankerr | Дата 26.2.2008, 17:58 |
кстати чего-то сразу ступил... blockSignal можно же выборочно использовать к любому объекту в том числе к любому объкту диалога а не кдиалогу целиком. |
|
Tonal | Дата 22.2.2008, 8:33 |
Зачем же дисконнект/коннект? Есть же QObject::blockSignals Насколько я понимаю в этом случае блокируються все сигналы... В этом смысле, мне думается, конект\дисконет более правильное решение т.к. изолирует только нужную часть сигналов. Если тебе действительно нужно выборочно блокировать сигналы, тогда действительно blockSignals не подходит. Тогда либо конект\дисконет, либо выставлять какой-нибудь флажёк перед действием, а в обработчике его проверять и ничего не делать если он выставлен. blockSignals очень хорошо подходит при первоначальном заполнении диалога данными например. Когда к событиям привязаны проверки и/или корректировки состояний других виджетов. |
|
Litkevich Yuriy | Дата 21.2.2008, 17:55 |
как и функции setFoo Foo в переводе с английского: что-то, что-нибудь и т.д. т.е. я имел в видукакую-нибудь функцию которая устанавливает состояние чего либо, некоторые функции не приводеть к посылке сигналаов, как например, для класса абстрактной кнопки: Цитата void QAbstractButton::clicked ( bool checked = false ) [signal] Данный сигнал посылается при активизации кнопки (т.е. когда нажатая кнопка отпускается при находении указателя мыши внутри кнопки), при нажатии горячего сочетания клавиш или при вызове click() либо animateClick(). Обратите внимание: данный сигнал не посылается при вызове setDown(), setChecked() или toggle(). У тригерной кнопки свойство checked равно true если кнопка включена, или false если кнопка выключена. См. также pressed(), released(), и toggled(). А насчет флага, похоже это моя мечта, а не действительность |
|
flankerr | Дата 21.2.2008, 11:37 |
не все сигналы посылаются при програмном изменении состояния, плюс некоторые функции попадаются перегруженые, в которых можно флажек выставить, "не сигналить". надо справку почитать вдруг для твоего случая такая комбинация сигнала и функции setFoo() попадется. На будущие учту спаисбо но возможность выставить флаг сигналить\несигналить я не нашёл впрочем как и функции setFoo возможно это есть начиная с 4.2 |
|
flankerr | Дата 21.2.2008, 11:33 |
Зачем же дисконнект/коннект? Есть же QObject::blockSignals Насколько я понимаю в этом случае блокируються все сигналы... В этом смысле, мне думается, конект\дисконет более правильное решение т.к. изолирует только нужную часть сигналов. |
|
Tonal | Дата 21.2.2008, 11:11 |
Зачем же дисконнект/коннект? Есть же QObject::blockSignals |
|
Litkevich Yuriy | Дата 21.2.2008, 0:25 |
не все сигналы посылаются при програмном изменении состояния, плюс некоторые функции попадаются перегруженые, в которых можно флажек выставить, "не сигналить". надо справку почитать вдруг для твоего случая такая комбинация сигнала и функции setFoo() попадется. | |
flankerr | Дата 20.2.2008, 12:08 |
Возник другой вопрос. Как сделать чтобы событие отрабатывало только по действию пользователя но не работало при программном изменение значения ? ну можно конечно делать дисконект слота перед прграмным изменением а после снова делать конектЮ но может есть что более "красивое"... |
|
flankerr | Дата 20.2.2008, 11:37 |
понял почему у меня не получалось. надо было так itemChanged ( QTreeWidgetItem *,int ) а у меня было так itemChanged ( QTreeWidgetItem * item, int column) |
|
ViGOur | Дата 20.2.2008, 9:11 |
однако, это видимо во всех случаях где макрос Q_OBJECT, Угу, именно так |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 10:48 |