問題タブ [qmetaobject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2586 参照

c++ - Qt メタオブジェクト システム: 名前付きの文字列を使用してシグナルを送信する

Qt シグナル/スロット システムはうまく動作しますが、実際に役立つ機能がいくつか欠けているようです (または、少なくとも使用方法がわかりません)。多くのシグナルを持つクラスがあり、このクラスにはswitch、変数の値に応じて適切なシグナルを発する必要がある があります。今、私はCプリプロセッサを使用してこれを解決します:

これは正しく見えません。もっとエレガントな方法があると確信しています。QMetaObject名前付きの文字列を使用してindexOfSignal、シグナルのQtの内部IDを取得できるメソッドがあります。この ID を使用してシグナルを発信できれば、私のコードはずっときれいになります。

によって生成されたシグナル メソッドの実装をのぞいてみたところ、シグナルmocごとに異なるのは 1 桁だけのようです。

ここで、<signal_id>は信号ごとに一意の整数です。

それで、問題は、どうすればいいemit(int signalIdx)ですか?QMetaObject::activateまたは、プライベート ヘッダーに埋もれているように見えるため、少なくとも を呼び出す機会を得ますか?

0 投票する
1 に答える
452 参照

c++ - オーバーロードされた演算子で QMetaObject を呼び出す

QObject でオーバーロードされた演算子 << を呼び出そうとした人はいますか。

たとえば、私はクラスを持っています

このように呼び出そうとすると、エラーが発生します。

ErrorMessage は次のようになります: No such method Worker::operator<<(char)(char)

0 投票する
1 に答える
727 参照

qt - 新しい QObject::connect 構文が機能しない

QObject::connect信号をスロットに接続するための新しい構文を使用しています。

しかし、私はこの奇妙なエラーを受け取り、その理由がわかりません:

奇妙なことに、古い構文を使用すると、すべて正常に動作します。

また、この接続は正常に機能します。

void onError(QNetworkReply::NetworkError);ですprivate slot

私は何を間違っていますか?

編集

これは動作するコードではないことに注意してください。このクラスは、問題を切り分けるためだけに作成しました。ただし、コードはコンパイルされるはずです。

myclass.h :

myclass.cpp :

私が得た唯一のエラーはここにあります:

0 投票する
3 に答える
756 参照

c++ - スロットはありませんが、Qt と C++ を使用すると QMetaObject::connectSlotsByName エラーが発生します

C++ と Qt Creator でプログラミングしていますが、コードは完璧に動作します。それにもかかわらず、コードをコンパイルするときに警告が表示されるという問題があります。

以前はon_but_PrintTab_clicked()という名前のスロットがありましたが、もう存在しません。どうすればこの警告を取り除くことができますか?

0 投票する
0 に答える
1222 参照

c++ - Q_ARG を使用して QMetaObject::newInstance() にポインターを渡す方法

QMetaObject::newInstance メソッドを使用してオブジェクトのコンストラクターを呼び出そうとしています。以下に、使用するコンストラクターの 2 つの例を示します。1 つはポインターを使用し、もう 1 つは基本型のみを使用します。

次を使用してコンストラクター B を呼び出すことができます。

ただし、コンストラクター A の呼び出しは機能しません。

Q_ARG(B*, b_ptr) を含むいくつかのバリエーションを試しました。さらに、クラス B も QObject から継承します。

0 投票する
1 に答える
129 参照

qt - QMetaObject::invokeMethod と複数の候補による曖昧さの解消

メソッドにこのようなオプションのパラメーターQMetaObject::invokeMethodがある場合、メソッドを で呼び出すことができるかどうか疑問に思います。

私が試してみました :

しかし、出力は(もちろん)複数の​​候補があることを示しています:

曖昧さをなくすことは可能invokeMethodですmyMethod(int,bool)か?

EDIT:「nt andbool」ではなく、カスタムクラスの名前空間に問題があることがわかりました。私は迅速で汚い解決策を書きました。

しかし、これは非常に非常に汚いようです。この問題を処理するための良い解決策はありますか?