下面以最常用的QComboBox为例说明。
Qt4风格的connect
示例代码:
1 | connect(ui->comboBox, SIGNAL(activated(int index)), this, SLOT(onActivated(int nIndex))); |
观察Qt4风格,可知第二个参数即使信号重载,也不会出现歧义。
Qt5风格的connect
示例代码:
1 | connect(ui->comboBox, &QComboBox::activated, this, &MyWidget::onActivated); |
但是,针对QComboBox对象,这样的信号槽连接,编译器会报编译错误:
1 | // error: C2664: “QMetaObject::Connection QObject::connect(const QObject *,const char *,const char *,Qt::ConnectionType) const”: |
经查询分析,原因如下:
1 | Q_SIGNALS: |
可知,因QComboBox的activated信号有重载实现导致。
Qt5风格信号重载的connect方式
示例代码:
1 | // 两种正确方式: |
1 | // 方式2: |
Qt助手范例:
![img](https://images2017.cnblogs.com/blog/389111/201709/389111-20170912190055032-636118301.png)
img
转载自:https://blog.csdn.net/weixin_34405354/article/details/85907557