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