Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Inhibitor от Сентябрь 21, 2015, 12:47



Название: #РЕШЕНО# Синтаксис метода connect
Отправлено: Inhibitor от Сентябрь 21, 2015, 12:47
Добрый день.
Нашел в чужих исходниках вот такой фрагмент кода:

Код:
connect<void (QDoubleSpinBox::*)(double)>(x, &QDoubleSpinBox::valueChanged, this, &MyWidget::setModified);

Вопрос, собственно, про выражение в треугольных скобках. Просто с таким синтаксисом при описании connect'а сталкиваться еще не приходилось. В документации ничего похожего не нашел. Подскажите где можно почитать о вышесказанном. Спасибо.


Название: Re: Синтаксис метода connect
Отправлено: Johnik от Сентябрь 21, 2015, 13:00
так как в классе QDoubleSpinBox два метода:
Код:
void	valueChanged(double d)
void valueChanged(const QString & text)
то этот connect аналог:
Код:
connect(x, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged), this, &MyWidget::setModified);


Название: Re: Синтаксис метода connect
Отправлено: deMax от Сентябрь 21, 2015, 14:35
Не знал. Получается connect шаблонная функция. Какой способ красивее(правильнее) использовать?


Название: Re: Синтаксис метода connect
Отправлено: Johnik от Сентябрь 21, 2015, 14:40
Не знал. Получается connect шаблонная функция.
Начиная с Qt5 доступен новый синтаксис connect (https://wiki.qt.io/New_Signal_Slot_Syntax).
Какой способ красивее(правильнее) использовать?
Решите для себя сами.
Необходимость в указании сигнатуры возникает не часто.


Название: Re: Синтаксис метода connect
Отправлено: Inhibitor от Сентябрь 21, 2015, 17:00
Johnik, спасибо большое, за пояснение!