クラスから2つの関数からを返すことに問題がありますconst char*
。何らかの理由で、最初の値が2番目の値のレプリカであるか、一部の値が間違っていますが、返される値は両方とも異なるポインターからのものです。この場合は2つQMap
です。 2つの関数のコード:
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->slot
とは、スロットと信号の署名を保存するものです(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::connectを使用するとエラーが発生します
Object::connect: Use the SLOT or SIGNAL macro to connect NovaRadioButton:: rc
QMap
私はsをいくつかの関数で埋めます:
signals.insert(methodname,QString(metamethod.signature()));
何が間違っているのか、Qt関数のバグなのかわかりませんQString
。ご協力いただきありがとうございます。