Хотя это невозможно напрямую с помощью Qt, некоторая привязка / каррирование доступна через LibQxt . Например и из документов QxtBoundFunction :
На сегодняшний день наиболее распространенным ожидаемым использованием является предоставление параметра в слот, когда
Сигнал не предлагать один. Многие разработчики, плохо знакомые с Qt, пытаются написать такой код:
\код
подключиться (кнопка, СИГНАЛ (нажал ()), lineEdit, SLOT (setText ("Hello, world")));
\ ENDCODE
Опытные разработчики Qt тут же обнаружат недостаток. Типичное решение
заключается в создании короткого однострочного слота-обертки, который вызывает нужную функцию. Немного
умные разработчики могут даже использовать QSignalMapper для обработки слотов, которые нуждаются только в одном
Параметр int или QString.
QxtBoundFunction позволяет записать предыдущий оператор connect следующим образом:
\код
connect (кнопка, SIGNAL (clicked ()), QxtMetaObject :: bind (lineEdit,
SLOT (setText (QString)), Q_ARG (QString, «Привет, мир!»)));
\код
Это приводит к тому же результату без необходимости создавать новый слот, или хуже,
весь объект, просто чтобы передать постоянное значение.
Кроме того, с помощью макроса QXT_BIND параметры из сигнала
может быть переставлен, пропущен или передан вместе с постоянными аргументами
с макросом Q_ARG. Это можно использовать для обеспечения обратных вызовов с сохранением состояния
универсальная функция, например.
Многие виды функций могут быть связаны. Наиболее распространенная привязка относится к
Сигналы и слоты Qt, но стандартные функции C / C ++ также могут быть связаны.
Дальнейшее развитие может добавить возможность привязки к функциям-членам C ++,
и разработчики могут сделать собственные подклассы QxtBoundFunction для еще большего
гибкость при необходимости.
Хотя я отправил несколько исправлений в LibQxt, я не использовал это напрямую, поэтому ваш пробег может отличаться.