Qt中信号槽重载使用方法

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.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值