私のアプリケーション内には、シグナルとスロットに結び付けられた特定のオブジェクトがあります。最近では、これらのスロットが関連付けられているシグナルが送信されたときに、これらのスロットが確実に呼び出されないようです。これらのオブジェクトは適切に接続され、プロジェクトを「リリース」モードでビルドすると実際に正常に動作しますが、「デバッグ」モードでビルドすると、ブレークポイントを追跡しない限り、スロットが呼び出されないように見えることに気付きました。
さらに、デバッガーを使用してコードの実行を段階的に追跡するか、これらのスロットの 1 つにブレークポイントを設定すると、それらのスロットが呼び出されたように見えます。
これは、これらの「特定の」オブジェクトを接続する方法です。
void Window::dynamicConnect(Entities *senderName, const QString &signalName, Entities *receiverName, const QString &slotName)
{
QMetaMethod signal = senderName->metaObject()->method(senderName->metaObject()->indexOfSignal(QMetaObject::normalizedSignature(qPrintable(signalName))));
QMetaMethod slot = receiverName->metaObject()->method(receiverName->metaObject()->indexOfSlot(QMetaObject::normalizedSignature(qPrintable(slotName))));
QObject::connect(senderName,signal,receiverName,slot);
}
また、エラーはまったく発生していません。誰にもアイデアはありますか?これが問題である唯一の理由は、常に 2 つのビルドを切り替える必要がないからです。