【发布时间】:2014-04-18 18:18:15
【问题描述】:
假设我有一个包含“function()”的字符串,其中 function() 是类中的一个插槽,我想将该插槽与任何信号连接,但使用该字符串。都没有
QString f="function()";
connect (randomobject, SIGNAL(randomsignal()), this, SLOT(f));
output: just says that slot f doesn't exist.
或
QString f="SLOT(function())";
//conversion to const char*
connect (randomobject, SIGNAL(randomsignal()), this, f);
output: Use the SLOT or SIGNAL macro to connect
工作。
有没有办法做类似的事情?重要的是它是一个字符串而不是函数指针。
【问题讨论】:
-
你检查SLOT宏的实现了吗?
-
您遇到的错误是什么?
-
是的,我做到了,而且我知道 SLOT 基本上将括号中的内容转换为字符串。我用输出更新了答案。
-
我不知道你为什么要这样...SLOT是一个宏“在代码的实际编译开始之前和任何代码由常规语句实际生成之前,它们由预处理器检查" 我不认为你将能够从字符串中调用宏......为什么不只是函数指针而不是 F 是一个字符串?!
-
对话框中有一系列插槽,选择一个后返回一个字符串。之后我可以使用函数指针的唯一方法是检查每个返回值并使用函数指针连接该值。