QTreeWidget, Сигналы |
Здравствуйте, гость ( Вход | Регистрация )
QTreeWidget, Сигналы |
ViGOur |
20.2.2008, 9:11
Сообщение
#11
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
|
|
|
flankerr |
20.2.2008, 11:37
Сообщение
#12
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
понял почему у меня не получалось.
надо было так itemChanged ( QTreeWidgetItem *,int ) а у меня было так itemChanged ( QTreeWidgetItem * item, int column) |
|
|
flankerr |
20.2.2008, 12:08
Сообщение
#13
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
Возник другой вопрос.
Как сделать чтобы событие отрабатывало только по действию пользователя но не работало при программном изменение значения ? ну можно конечно делать дисконект слота перед прграмным изменением а после снова делать конектЮ но может есть что более "красивое"... |
|
|
Litkevich Yuriy |
21.2.2008, 0:25
Сообщение
#14
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
не все сигналы посылаются при програмном изменении состояния, плюс некоторые функции попадаются перегруженые, в которых можно флажек выставить, "не сигналить". надо справку почитать вдруг для твоего случая такая комбинация сигнала и функции setFoo() попадется.
|
|
|
Tonal |
21.2.2008, 11:11
Сообщение
#15
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Зачем же дисконнект/коннект?
Есть же QObject::blockSignals |
|
|
flankerr |
21.2.2008, 11:33
Сообщение
#16
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
|
|
|
flankerr |
21.2.2008, 11:37
Сообщение
#17
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
не все сигналы посылаются при програмном изменении состояния, плюс некоторые функции попадаются перегруженые, в которых можно флажек выставить, "не сигналить". надо справку почитать вдруг для твоего случая такая комбинация сигнала и функции setFoo() попадется. На будущие учту спаисбо но возможность выставить флаг сигналить\несигналить я не нашёл впрочем как и функции setFoo возможно это есть начиная с 4.2 |
|
|
Litkevich Yuriy |
21.2.2008, 17:55
Сообщение
#18
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
как и функции setFoo Foo в переводе с английского: что-то, что-нибудь и т.д. т.е. я имел в видукакую-нибудь функцию которая устанавливает состояние чего либо, некоторые функции не приводеть к посылке сигналаов, как например, для класса абстрактной кнопки: Цитата void QAbstractButton::clicked ( bool checked = false ) [signal] Данный сигнал посылается при активизации кнопки (т.е. когда нажатая кнопка отпускается при находении указателя мыши внутри кнопки), при нажатии горячего сочетания клавиш или при вызове click() либо animateClick(). Обратите внимание: данный сигнал не посылается при вызове setDown(), setChecked() или toggle(). У тригерной кнопки свойство checked равно true если кнопка включена, или false если кнопка выключена. См. также pressed(), released(), и toggled(). А насчет флага, похоже это моя мечта, а не действительность Сообщение отредактировал Litkevich Yuriy - 21.2.2008, 18:01 |
|
|
Tonal |
22.2.2008, 8:33
Сообщение
#19
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Зачем же дисконнект/коннект? Есть же QObject::blockSignals Насколько я понимаю в этом случае блокируються все сигналы... В этом смысле, мне думается, конект\дисконет более правильное решение т.к. изолирует только нужную часть сигналов. Если тебе действительно нужно выборочно блокировать сигналы, тогда действительно blockSignals не подходит. Тогда либо конект\дисконет, либо выставлять какой-нибудь флажёк перед действием, а в обработчике его проверять и ничего не делать если он выставлен. blockSignals очень хорошо подходит при первоначальном заполнении диалога данными например. Когда к событиям привязаны проверки и/или корректировки состояний других виджетов. |
|
|
flankerr |
26.2.2008, 17:58
Сообщение
#20
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: 0 |
кстати чего-то сразу ступил...
blockSignal можно же выборочно использовать к любому объекту в том числе к любому объкту диалога а не кдиалогу целиком. Сообщение отредактировал flankerr - 26.2.2008, 17:59 |
|
|
Текстовая версия | Сейчас: 29.4.2024, 2:04 |