Qt中重载信号的绑定方法:
方法一:connect中使用SIGNAL()/SLOT()
方法二:借助qOverload模板函数或类模板QOverload等。如下
auto qNonConstOverload(T memberFunctionPointer)
Returns the memberFunctionPointer pointer to a non-constant member function:
struct Foo { void overloadedFunction(int, const QString &); void overloadedFunction(int, const QString &) const; }; connect(sender,qConstOverload<int, const QString &>(&Foo::overloadedFunction), receiver, memFunc); connect(sender,qNonConstOverload<int, const QString &>(&Foo::overloadedFunction), receiver, memFunc);
This function was introduced in Qt 5.7.
See also qOverload, qNonConstOverload, and Differences between String-Based and Functor-Based Connections.
auto qOverload(T functionPointer)
Returns a pointer to an overloaded function. The template parameter is the list of the argument types of the function. functionPointer is the pointer to the (member) function:
struct Foo { void overloadedFunction(); void overloadedFunction(int, const QString &); }; connect(sender, qOverload<>(&Foo::overloadedFunction), receiver, memFunc); connect(sender, qOverload<int, const QString &>(&Foo::overloadedFunction), receiver, memFunc);
If a member function is also const-overloaded qConstOverload and qNonConstOverload need to be used.
qOverload() requires C++14 enabled. In C++11-only code, the helper classes QOverload, QConstOverload, and QNonConstOverload can be used directly:
connect(sender, QOverload<>::of(&Foo::overloadedFunction), receiver, memFunc); connect(sender, QOverload<int, const QString &>::of(&Foo::overloadedFunction), receiver, memFunc);
Note: Qt detects the necessary C++14 compiler support by way of the feature test recommendations from C++ Committee's Standing Document 6.
This function was introduced in Qt 5.7.
See also qConstOverload(), qNonConstOverload(), and Differences between String-Based and Functor-Based Connections.