Как использовать QMetaMethod с QObject:: подключение

У меня есть два экземпляра подклассов QObject и два экземпляра QMetaMethod сигнала в одном из объектов и слота в другом объекте. Я хочу соединить этот сигнал и слот друг с другом.

Я просмотрел qobject.h файл и нахожу, что СИГНАЛ () и СЛОТ () макрос, просто добавляют "1" или "2" символ к началу сигнатуры метода, таким образом, похоже, что должно быть возможно добавить тот же символ к началу строки, возвращенной QMetaMethod:: подпись (), но этот подход зависит от некоторых недокументированных внутренностей инструментария и может быть повреждена в любое время новой версией QT.

Кто-либо знает надежный путь к сигналам соединения и слотам через их представление отражения QMetaMethod?

Отредактированный: я создал предложение в спокойной системе отслеживания ошибок: https://bugreports.qt.io/browse/QTBUG-10637, Если кто-либо также заинтересовал этой функцией, можно голосовать за этот билет там.

7
задан MBach 11 January 2017 в 11:29
поделиться

2 ответа

Похоже, что нет способа заставить его работать без опоры на внутреннюю реализацию. На вашем месте я бы отправил запрос на создание функции в Qt bug tracker, написал бы код, имитирующий текущее поведение макросов SIGNAL/SLOT, и добавил бы модульный тест, который откажет при изменении поведения SIGNAL/SLOT.

Возможно, существует более простое решение проблемы, которую вы пытаетесь решить: опишите, что именно вы пытаетесь сделать, без деталей реализации.

1
ответ дан 6 December 2019 в 12:47
поделиться

Если метод подписи является публичным в QMetaMethod, то результат не должен быть сломан троллями и его безопасно использовать (в документации ничего не говорится об "опасностях" при использовании QMetaMethod::метод подписи). Я думаю, что вы можете безопасно использовать его. Просто чтобы убедиться, какую версию Qt вы используете сейчас ?

0
ответ дан 6 December 2019 в 12:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: