12
私はqt信号で標準文字列を放射しようとしています。信号はキューに入れられた状態で配信されます。 qtドキュメントに書いてあるように、タイプをqRegisterMetaTypeに登録しましたが、運はありません。私はこの qRegisterMetaType<std::string>("std::string")
qt信号でstd :: stringを出力
私はqt信号で標準文字列を放射しようとしています。信号はキューに入れられた状態で配信されます。 qtドキュメントに書いてあるように、タイプをqRegisterMetaTypeに登録しましたが、運はありません。私はこの qRegisterMetaType<std::string>("std::string")
qt信号でstd :: stringを出力
のようにそれを登録しています。また、実行する必要があります。
Q_DECLARE_METATYPE (std::string)
はQ_DECLARE_METATYPEを()すべてのテンプレート ベースの機能に知られているタイプになります追加Qt Doc
を引用し、 QVariantを含む。 名が実行時に解決されているので、あなたもqRegisterMetaType()を呼び出す必要があり、はあなたがキューに入れられたシグナルとスロットの接続やQObjectのの プロパティシステムに タイプを使用する場合があります。
私は試したが、まだ動作しません。また、私のプロジェクトではqt以外の型を出すシグナルが多く、Q_DECLARE_METATYPEを実行したことはなく、qRegisterMetaTypeのみであり、動作しています。 – user152508
私はちょうど簡単なテストを行いました。そして、qRegisterMetaTypeとQ_DECLARE_METATYPEの両方を使用することは確かに機能します。どちらか一方を残すと、qRegisterMetaTypeを呼び出す必要があるというランタイムエラーメッセージが表示されます。私の推測では、あなたが使用している他のタイプの場合、あなたは待ち接続を使用していません。 – Chris
OK、私はこのオーバーロードvoid qRegisterMetaTypeStreamOperators(const char * typeName)を使用していたかもしれませんが、なぜそれが動作しなかったのでしょうか。このオーバーレイドint qRegisterMetaType()をQ_DECLARE_METATYPEの組み合わせで試してみました。 – user152508