#qt #signals-slots
#qt #сигналы-слоты
Вопрос:
Каков наилучший способ подключения, например, двойного сигнала к слоту QString в QT? Поскольку эти сигналы и слоты несовместимы, подключение направления невозможно. Существует ли какой-либо механизм, аналогичный преобразователям значений, используемым в привязке данных WPF для достижения этого в QT?
Я мог бы реализовать свой собственный двойной слот, который затем выдает мой собственный сигнал QString, но для простого преобразования значений требуется много работы. Существуют ли другие способы?
Ответ №1:
Кроме создания QObject адаптера, такой вещи, к сожалению, не существует. Самое странное ниспровержение передачи аргументов, которое позволяет Qt, — это подключать сигнал с аргументами к слоту без параметров (аргументы игнорируются) и смешивать и сопоставлять Type
и const Typeamp;
(я не уверен в этом на 100%).
Однако вы можете сойти с ума от адаптера, переопределив qt_metacall
метод и используя разные стратегии преобразования и арности сигнал / слот. Это значительно большая (и забавная) задача по сравнению с простым созданием двойного слота.