как идентифицировать сигнал, идентифицировать сигнал |
Здравствуйте, гость ( Вход | Регистрация )
как идентифицировать сигнал, идентифицировать сигнал |
kwisp |
30.1.2009, 11:41
Сообщение
#11
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
единственное что приходит в гоолову это так как вы собираетесь переопределять виджеты
Цитата .. необходимые для нас виджеты будут переопределены ... переопределить и стандартные сигналы
как я понял необходимо определить не только сигнл но объект который его послал. т.к. если будет несколько объектов одного типа стандартные сигналы у них называются одинаково то параметр в сигнале спасает + если он целого типа то значительно упрощает обработку в слоте приемнике. |
|
|
Litkevich Yuriy |
30.1.2009, 13:47
Сообщение
#12
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
fantom, Если я правильно понял конечную цель, то предлагаю посмотреть на готовое решение: Vedga
Суть проста. На клиента ставится спецпрограмма Vedga-client, прога пишется одна для сервера, но не чистая Qt там в часности соединение сигналов идет другими функциями. написаное прложение запускается на сервере. А клиенты пользуются им с помощью Vedga-client. Подробности по указанной ссылке, и ниже там смотри ссылку "Обсудить..." Дальнейшее обсуждение связанное с Vedga перенес в существующую тему. тык |
|
|
ViGOur |
30.1.2009, 15:17
Сообщение
#13
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
По всей видимости стандартных путей нет.
Если хаком, то по всей видимости тебе нужно достучаться до класса QObjectPrivate, в нем есть структура Sender: signal - это индекс сигнала, благодаря которому ты сможешь получить имя сигнала с помощью QMetaObject.Судя по коду указатель на QObjectPrivate хранится в d_ptr
Если я все правильно понял по сырцам... |
|
|
fantom |
30.1.2009, 16:06
Сообщение
#14
|
Студент Группа: Участник Сообщений: 47 Регистрация: 29.1.2009 Пользователь №: 515 Спасибо сказали: 1 раз(а) Репутация: 1 |
ViGOur вы исходники какой версии qt смотрели? У меня 4.3.2 и в классе QObjectPrivate да и вообще нигде нет структуры Sender.
|
|
|
ViGOur |
30.1.2009, 16:08
Сообщение
#15
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Блин, забыл что у вас 4.3.2, я смотрел 4.4.0. Сейчас гляну можно ли нахаляву хакнуть в 4.3.2.
|
|
|
fantom |
30.1.2009, 16:17
Сообщение
#16
|
Студент Группа: Участник Сообщений: 47 Регистрация: 29.1.2009 Пользователь №: 515 Спасибо сказали: 1 раз(а) Репутация: 1 |
да.
в 4.4 должно как то так работать int signalId = (reinterpret_cast<QObjectPrivate*>(this->d_ptr))->currentSender->signal; |
|
|
ViGOur |
30.1.2009, 16:17
Сообщение
#17
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
В вашей версии есть такой аргумент как QObjectPrivate::currentSenderSignalIdStart.
Гляньте в qtdir/src/corelib/kernel/qobject.cpp в методе bool QObject::event(QEvent *e) есть такой код: А вот какзацепиться за currentSenderSignalIdStart, нужно думать...
Сообщение отредактировал ViGOur - 30.1.2009, 16:19 |
|
|
fantom |
30.1.2009, 16:42
Сообщение
#18
|
Студент Группа: Участник Сообщений: 47 Регистрация: 29.1.2009 Пользователь №: 515 Спасибо сказали: 1 раз(а) Репутация: 1 |
Кстати а как получить имя сигнала по индексу? Вроде хак по крайней мере на 4.4.2 прокатил.
Или как получить список всех сигналов объекта? |
|
|
fantom |
30.1.2009, 17:24
Сообщение
#19
|
Студент Группа: Участник Сообщений: 47 Регистрация: 29.1.2009 Пользователь №: 515 Спасибо сказали: 1 раз(а) Репутация: 1 |
Ну судя по metaObject()->indexOfSignal обращение через QObjectPrivate работает верно..
Но все же как получить список сигналов как это делает qt designer? |
|
|
ViGOur |
30.1.2009, 17:24
Сообщение
#20
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
|
|
|
Текстовая версия | Сейчас: 26.11.2024, 21:22 |