In Qt, different classes have a number of signals and slots that have overloads, so that the connection recording looks simply monstrous, when static_cast is required to specify a particular signal or slot.
So, in Qt, there is a functional for simplifying the recording of such overloads through the template methods QOverload or through the macro qOverload.
The fundamental difference between qOverload and QOverload is that the macro requires C ++ version 14, whereas the template requires C ++ version 11.
It turns out that this example
struct Foo { void overloadedFunction(); void overloadedFunction(int, QString); }; // requires C++14 qOverload<>(&Foo:overloadedFunction) qOverload<int, QString>(&Foo:overloadedFunction) // same, with C++11 QOverload<>::of(&Foo:overloadedFunction) QOverload<int, QString>::of(&Foo:overloadedFunction)
For signals and slots with QOverload, the entry will look like this (example from documentation on QComboBox)
connect(comboBox, QOverload<const QString &>::of(&QComboBox::activated), [=](const QString &text){ /* ... */ });
Agree, it will be much easier to perceive than something like this from the previous lesson on signals and slots
connect(m_testClass, static_cast<void(TestClass::*)(int)>(&TestClass::testSignal), this, static_cast<void(Widget::*)(int)>(&Widget::onTestSlot));
Let's rewrite this example using QOverload
connect(m_testClass, QOverload<int>::of(&TestClass::testSignal), this, QOverload<int>::of(&Widget::onTestSlot));
The recording became not only shorter, but also more understandable.
Класс! Улучшил мою кодерскую жизнь :) А как узнал об этом QOverload? Наткнулся изучая доки?)
Ага. Просматривал документацию на QComboBox и наткнулся на обновление записи коннектнов.
Кстати, подпишись и на раздел статей Android, я сейчас пишу серию статей, в которых описываются два варианта примеров:
В документации до сих пор нет отдельного описания.
В документации по многим моментам нет описания, особенно, что касается QQuick, просто беда. Столько функционала не документировано, остаётся только в заголовочники лезть и сверяться с документацией, что там есть, а что нет.