crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> QTreeWidget, Сигналы
ViGOur
  опции профиля:
сообщение 20.2.2008, 9:11
Сообщение #11


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Litkevich Yuriy @ 19.2.2008, 18:42) *
однако, это видимо во всех случаях где макрос Q_OBJECT,
Угу, именно так :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 20.2.2008, 11:37
Сообщение #12


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


понял почему у меня не получалось. :rolleyes:
надо было так
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  


Цитата(Tonal @ 21.2.2008, 11:11) *
Зачем же дисконнект/коннект?
Есть же QObject::blockSignals


Насколько я понимаю в этом случае блокируються все сигналы...
В этом смысле, мне думается, конект\дисконет более правильное решение т.к. изолирует только нужную часть сигналов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 21.2.2008, 11:37
Сообщение #17


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 21.2.2008, 0:25) *
не все сигналы посылаются при програмном изменении состояния, плюс некоторые функции попадаются перегруженые, в которых можно флажек выставить, "не сигналить". надо справку почитать вдруг для твоего случая такая комбинация сигнала и функции setFoo() попадется.

На будущие учту спаисбо
но возможность выставить флаг сигналить\несигналить я не нашёл впрочем как и функции setFoo
возможно это есть начиная с 4.2
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 21.2.2008, 17:55
Сообщение #18


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(flankerr @ 21.2.2008, 14:37) *
как и функции 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  


Цитата(flankerr @ 21.2.2008, 14:33) *
Цитата(Tonal @ 21.2.2008, 11:11) *
Зачем же дисконнект/коннект?
Есть же 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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.4.2024, 2:04