好吧,我想要的是实现像宏 SIGNAL 和 SLOT 一样工作的函数,但使用我自己的实现,所以目标是函数(或者我自己的宏,如果我可以创建它)接收像字符串“mycustomsignal”这样的参数他返回一个 const char* "2mycustomsignal(double,int)" 所以我使用 QMap 来存储这个关联 QMap<"signal name","signal signature">,我将它填充到另一个函数中。
在这种情况下,我的 QMap 是this->signals
,所以我使用密钥“mycustomsignal”搜索签名“mycustomsignal(something)”并预先添加 QObject::connect 识别信号的代码,我得到“2mycustomsignal(something)”所以我将其转换为 const char* 因为 QObject::connect 具有这种格式的参数,我也想与 SIGNAL 和 SLOT MACROS 结合使用,如下所示:
QObject::connect(customwidget, customwidget->getSignal("somesignal"),
somewidget, SLOT(someslot()));
我使用的功能是(仅用于了解我的工作):
const char* SomeClass::getSignal(QString signalName) {
QString signalsignature = this->signals.value(signalName);
signalsignature.prepend(QString::number(QSIGNAL_CODE));
QByteArray ba = signalsignature.toLatin1();
return signalformated; //Here is the lost of data because QByteArray only exist in the function
}
但这会返回一个指向本地的指针,并且当函数结束时数据源被破坏,那么我如何使用函数或创建自己的宏来做到这一点?
感谢您的任何帮助或建议。