嗯,我想是实现工作方式类似于宏SIGNAL和SLOT但我自己的实现的功能,因此我们的目标是函数(或我自己的宏,如果我可以创建一个)收到这样的字符串参数“mycustomsignal”他返回一个const char *“2mycustomsignal(双,INT)”,让我这样做使用商店QMAP这asociation QMAP <“信号名称”,“信号签名”>,我填补它在另一个功能。
在这种情况下我QMAP是this->signals
,所以我搜索签名“mycustomsignal(东西)”与按键“mycustomsignal”和前置一个的QObject ::连接承认信号的代码,我得到“2mycustomsignal(东西)”,所以我转换它为const char *,因为的QObject ::连接具有这种格式的这个参数,我想在SIGNAL和SLOT宏这样的连词也使用:
QObject::connect(customwidget, customwidget->getSignal("somesignal"),
somewidget, SLOT(someslot()));
我用的是(仅适用于undertand我做什么)的功能:
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
}
但这返回一个指针到本地和数据源函数结束时被销毁,所以我可以如何与功能或创建自己的MACRO做到这一点?
感谢您的任何帮助或建议。