さて、私が望むのは、マクロSIGNALおよびSLOTのように機能する関数を実装することですが、独自の実装を使用するため、関数(または作成できる場合は独自のマクロ)が文字列「mycustomsignal」のようなパラメーターを受け取ることが目標です彼は const char* "2mycustomsignal(double,int)" を返すので、この関連付け QMap<"signal name","signal signature"> を格納するために QMap を使用して、別の関数に入力します。
この場合、私の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
}
しかし、これはローカルへのポインターを返し、関数が終了するとデータのソースが破棄されるため、関数を使用してこれを行うか、独自のマクロを作成するにはどうすればよいですか?
助けや提案をありがとう。