QT信号槽是很强大的连接方式,实现了各种类与类之间的解耦,极大的方便了对象之间的参数传递。但是如果传递的是宏定义的数据类型,会出现什么样的情况呢?
举例说明:
private slots://定义一个槽函数
void slotTest( int);
signals:
void sigTest( int);//定义一个信号
void QtGuiMain::slotBtn() {
emit sigTest(10);//点击按钮发射信号
}
void QtGuiMain::slotTest( UNINT a ) {
qDebug() << "+++++" << a;
}
输出内容:
+++++10;
说明信号槽关联成功了!
但是如果我们使用宏定义数据类型呢?
#define UNINT int
private slots:
void slotTest( UNINT );
signals:
void sigTest( UNINT );
void QtGuiMain::slotBtn() {
emit sigTest(10);
}
void QtGuiMain::slotTest( UNINT a ) {
qDebug() << "+++++" << a;
}
再次点击按钮运行:
发现并没有输出内容,向上查看发现输出一下信息:
QObject::connect: No such signal QtGuiMain::sigTest( UNINT ) in QtGuiMain.cpp:12
QObject::connect: (sender name: 'QtGuiMainClass')
QObject::connect: (receiver name: 'QtGuiMainClass')
说明信号不支持宏定义类型。这是踩过的坑,给大家提个醒!以上!