Russian Qt Forum
Ноябрь 24, 2024, 21:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Новый connect Qt 5 - другая таблица соединений?  (Прочитано 6516 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« : Апрель 14, 2014, 11:27 »

В предыдущих Qt в таблице соединений хранились пары символьных имен сигналов и слотов, с числом в начале имени. '1' - у сигнала, '2' - у слота. Я это использовал в своем фреймворке для того, чтобы узнавать, с какой стороной объекта установлено соединение, с передатчиком или с приемником. В новом варианте можно вызвать connect с указателями на функции. При этом функция-приемник не обязательно должна быть объявлена, как slot (фактически, это имя нужно только для поддержки старого способа). И даже это может быть лямбда-функция без имени. Собственно, такое давно хотелось, особенно лямбды, которые по сигналу внутри что-то переключают, и больше нигде никогда не нужны.

Но теперь мне не ясно, как определять, к передатчику или приемнику подключено соединение. Я еще не копал, но очевидно таблица теперь содержит только указатели на точки входа, а не символьные имена с префиксами. А есть ли информация - сигнал это или слот? Можно её как-то легально получить? Кто-нибудь уже разобрался с этим?
Записан

2^7-1 == 127, задумайтесь...
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Апрель 14, 2014, 11:52 »

MethodType QMetaMethod::methodType() const
Returns the type of this method (signal, slot, or method).
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #2 : Апрель 15, 2014, 13:40 »

Дык... этот метод и в 4.8 был. Но у меня несколько иная ситуация, и блин... с моим кодом новый вариант коннекта не совместим, придется переделывать.

Хотя, что слышно - старый connect с помощью макросов SIGNAL() и SLOT() не собираются убрать совсем? Если нет, то я могу ничего не менять.
Записан

2^7-1 == 127, задумайтесь...
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Апрель 15, 2014, 13:50 »

думаю если и уберут, то в Qt 6
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Bepec
Гость
« Ответ #4 : Апрель 15, 2014, 13:51 »

Ничего пока не слышно. Молчат как партизаны. Думаю оставят ради совместимости, вот только переиначат как-нить. Всё ж у вас код по локоть в механизме сигнал слотов Улыбающийся
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #5 : Апрель 15, 2014, 14:05 »

Я это использовал в своем фреймворке для того, чтобы узнавать, с какой стороной объекта установлено соединение, с передатчиком или с приемником.
QObject::connectNotify, QObject::disconnectNotify, QObject::isSignalConnected - ничто из этого вашу проблему не решит?
« Последнее редактирование: Апрель 15, 2014, 14:11 от LisandreL » Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #6 : Апрель 15, 2014, 14:31 »

Я это использовал в своем фреймворке для того, чтобы узнавать, с какой стороной объекта установлено соединение, с передатчиком или с приемником.
QObject::connectNotify, QObject::disconnectNotify, QObject::isSignalConnected - ничто из этого вашу проблему не решит?

Неа... мне надо до соединения выяснять, можно его устанавливать или нет. Поэтому в дескрипторах, в том числе, статических, прописано - вход или выход. Если совместимости не будет - мне надо будет переделывать, добавлять в дескриптор признак вход-выход. Пока обходился просто макросом, проверяющим символ '1' или '2' в начале имени записано.

Не смертельно, конечно, но надо понимать, чего ожидать...
Записан

2^7-1 == 127, задумайтесь...
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 23.