• 1929阅读
  • 4回复

宏定义槽函数的问题 [复制链接]

上一主题 下一主题
离线thiser
 

只看楼主 倒序阅读 楼主  发表于: 2018-10-19
我定义private slots: void Onxxx(); 时,消息和槽函数能够正常连接

当我定义一个宏时,
#define SLOT_DECLARE(msgname) \
private slots: void On##msgname();

再在类中使用宏声明槽函数SLOT_DECLARE(xxx);这个时候,消息在连接槽函数时,无法找到该槽函数,这是为什么呢?
博客地址:https://blog.csdn.net/llmys
希望能够和大家共同进步
离线dbzhang800

只看该作者 1楼 发表于: 2018-10-19
信号和槽的提取,是Qt的预处理器 moc(.exe) 干的

你期望的是C++预处理器帮帮你生成合适的槽函数名,而后moc再提取信号和槽

但是,

moc预处理必须在C++的预处理器工作之前进行(不然private slots中的slots等空的宏直接就被C++预处理变成空白了,moc彻底没法工作了)。

离线thiser

只看该作者 2楼 发表于: 2018-10-19
那有没有什么可以解决这个问题呢?比如重新更改moc的代码,编译生成moc.exe?
博客地址:https://blog.csdn.net/llmys
希望能够和大家共同进步
离线ustone

只看该作者 3楼 发表于: 2018-10-21
楼主这个必要性在哪里呢?
离线笑颜

只看该作者 4楼 发表于: 2018-10-22
Qt那么多connect,换一个就解决问题。
快速回复
限100 字节
 
上一个 下一个