QT 关于信号槽传递是宏定义数据类型

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')

说明信号不支持宏定义类型。这是踩过的坑,给大家提个醒!以上!

猜你喜欢

转载自blog.csdn.net/wb175208/article/details/80260451