错误的行为我有一个问题,从一个类返回从两个函数的const char*
,由于某种原因的第一个值是第二值的副本或一些值是不对的,但同时返回值是从不同的指针,在此情况下,两个QMap
,下面是两个函数的代码:为const char * Qt中
const char* SomeClass::getSignal(QString signalName)
{
QString signalsignature = this->signals.value(signalName);
signalsignature.prepend(QString::number(QSIGNAL_CODE));
QByteArray ba = signalsignature.toLatin1(); // i try toUTF8 and to Local8Bit
const char* signalformated = ba.constData();
return signalformated;
}
const char* SomeClass::getSlot(QString slotName)
{
QString slotsignature = this->slots.value(slotName);
slotsignature.prepend(QString::number(QSLOT_CODE));
QByteArray ba = slotsignature.toLatin1();
const char* slotformated = ba.constData();
return slotformated;
}
的和this->signals
是QMap<QString, QString>
该保存槽和信号签名(somesignal(int)
或someslot(bool)
连键somesignal
,someslot
分别) 。
,我使用的接口,全部采用从它的其他功能工作正常,但使用这些功能这样的使用是从DLL加载由QLibrary
类:
const char* signal = someclassinstance->getSignal(tr("clicked"));
const char* slot = someclassinstance->getSlot(tr("onclicked"));
cout << "connecting signal " << signal << " to slot " << slot << endl;
这告诉我:
connecting signal clicked to slot rc
和错误时,我使用的QObject ::连接
Object::connect: Use the SLOT or SIGNAL macro to connect NovaRadioButton:: rc
我填的是QMap
s是一些功能有:
signals.insert(methodname,QString(metamethod.signature()));
我不知道我做错了,或者也许是Qt的函数中的错误从QString
,感谢您的帮助。
谢谢你,但不是另一种方式?我返回const char *因为我用它的QObject ::连接(QObject *发射器,常量字符*信号,QObject *接收器,常量字符*槽);所以我想要的是在函数中模拟SIGNAL和SLOT宏,或者如果有另一种方式,我知道我可以返回一个QByteArray并使用.data(),但是如果可能,我想模拟一个SIGNAL和SLOT宏。 –
@DiegoFernandoMurilloValenci在评论中回答太复杂。发表一个新的问题:) –
是的,我做到了,谢谢[链接](http://stackoverflow.com/questions/13485841/how-to-implement-the-macros-signal-and-slot-as-功能-qt)的 –