我const char*
从一个类的两个函数返回 a 时遇到问题,由于某种原因,第一个值是第二个值的副本,或者某些值是错误的,但是返回的两个值都来自不同的指针,在这种情况下是两个QMap
,以下是两个函数的代码:
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;
}
Thethis->slot
和 thethis->signals
分别QMap<QString, QString>
保存插槽和信号签名(somesignal(int)
或分别someslot(bool)
使用键somesignal
)someslot
。
我使用的类是通过QLibrary
使用接口从 DLL 加载的,使用它的其他函数一切正常,但使用这些函数,如下所示:
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::connect 时的错误
Object::connect: Use the SLOT or SIGNAL macro to connect NovaRadioButton:: rc
我填充QMap
s 是一些函数:
signals.insert(methodname,QString(metamethod.signature()));
我不知道我做错了什么,或者可能是 Qt 函数中的错误QString
,感谢您的帮助。