Сигналы и слоты Qt: упрощенный синтаксис подключения?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Сигналы и слоты Qt: упрощенный синтаксис подключения?

Сообщение Anonymous »

В документации Qt приведен следующий пример подключения сигнала к слоту:

Код: Выделить всё

QObject::connect(lineEdit, &QLineEdit::textChanged, label, &QLabel::setText);
Однако синтаксис несколько сложен (то есть многословен) и его можно сократить с помощью этого макроса:

Код: Выделить всё

#define CONNECT(sender, signal, receiver, method) \
QObject::connect( \
sender,   &std::remove_pointer_t::signal, \
receiver, &std::remove_pointer_t::method \
)
Теперь приведенное выше соединение упрощается до:

Код: Выделить всё

CONNECT(lineEdit, textChanged, label, setText);
Я проверил это, и оно работает нормально. Итак, кажется, что этот макрос позволяет объединить преимущества синтаксиса соединения на основе функтора (проверка типов во время компиляции и неявные преобразования типов) с простым синтаксисом. Конечно, это не будет работать для перегруженных сигналов или слотов, а также когда тип соединения не должен быть Qt::AutoConnection по умолчанию.
Мой вопрос: Есть ли какие-либо проблемы с этим подходом, о которых я еще не знаю, и действительно ли это вообще хорошая идея?

Подробнее здесь: https://stackoverflow.com/questions/786 ... ect-syntax
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»