Russian Qt Forum

Qt => Общие вопросы => Тема начата: Гурман от Апрель 14, 2014, 11:27



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

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


Название: Re: Новый connect Qt 5 - другая таблица соединений?
Отправлено: kambala от Апрель 14, 2014, 11:52
MethodType QMetaMethod::methodType() const
Returns the type of this method (signal, slot, or method).


Название: Re: Новый connect Qt 5 - другая таблица соединений?
Отправлено: Гурман от Апрель 15, 2014, 13:40
Дык... этот метод и в 4.8 был. Но у меня несколько иная ситуация, и блин... с моим кодом новый вариант коннекта не совместим, придется переделывать.

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


Название: Re: Новый connect Qt 5 - другая таблица соединений?
Отправлено: kambala от Апрель 15, 2014, 13:50
думаю если и уберут, то в Qt 6


Название: Re: Новый connect Qt 5 - другая таблица соединений?
Отправлено: Bepec от Апрель 15, 2014, 13:51
Ничего пока не слышно. Молчат как партизаны. Думаю оставят ради совместимости, вот только переиначат как-нить. Всё ж у вас код по локоть в механизме сигнал слотов :)


Название: Re: Новый connect Qt 5 - другая таблица соединений?
Отправлено: LisandreL от Апрель 15, 2014, 14:05
Я это использовал в своем фреймворке для того, чтобы узнавать, с какой стороной объекта установлено соединение, с передатчиком или с приемником.
QObject::connectNotify, QObject::disconnectNotify, QObject::isSignalConnected - ничто из этого вашу проблему не решит?


Название: Re: Новый connect Qt 5 - другая таблица соединений?
Отправлено: Гурман от Апрель 15, 2014, 14:31
Я это использовал в своем фреймворке для того, чтобы узнавать, с какой стороной объекта установлено соединение, с передатчиком или с приемником.
QObject::connectNotify, QObject::disconnectNotify, QObject::isSignalConnected - ничто из этого вашу проблему не решит?

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

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