問題タブ [qt-signals]

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 投票する
8 に答える
8950 参照

c++ - Qt でキュー接続を使用するときにスロット呼び出しを圧縮する方法は?

Qt Signal-Slot 通信に関するこのような記事をいくつか読んだ後でも、キュー接続に関する質問があります。

いくつかのスレッドが常に互いにシグナルを送信している場合、1 つthread_slowがイベント ループで遅いメソッドを実行していて、もうthread_fast1 つのスレッドがまだ実行されている間に複数のシグナルを送信する高速メソッドを実行しているとします。それは遅いメソッドです... .. からの遅いメソッドthread_slowがイベント ループに戻るとき、前に送信されたすべてのシグナルを処理しますthread_fastか、それとも最後のシグナルだけを処理しますか (すべてのシグナルは同じタイプです)。

すべてのシグナルを処理する場合、thread_slow 唯一のプロセスを最後のプロセスにする方法はありますか? (マルチスレッド アプリケーションで「最後の信号」を考慮すると曖昧になる可能性があります。簡単にするために、スレッドが最後の信号を要求する前の最後の信号を考えてみましょう。そのため、スレッドが最後の信号を探している間に送信される新しい信号は失われる可能性があります。 )。

(複数のスレッドからデータを受信する複数のスレッドがあり、それらに古いデータを処理させたくないので、これを求めています。送信された最後のデータのみです)

いくつかのテストを実行しましたが、Qt はすべてのシグナルを処理するようです。私は1つのスレッドを実行させました:

別のスロットの場合は次のようになります。

そしてスレッドが実行されます:

私は 500 ミリ秒ごとに 1 つのスレッドから別のスレッドにシグナルを送信しており、もう 1 つのスレッドは 3000 ミリ秒 (3 秒) スリープしてから起動し、内部変数を 100 ずつインクリメントします。スロットが実行されるたびに、次のテキストを出力します。受け取った値 + 内部変数。私が持っている結果は、呼び出されるたび QCoreApplication::processEvents();にすべてのシグナルが実行されるということです....(以前のコードにバグが見つかったため、この部分を編集しました)

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

qt - QTableView からシグナルが発信されない

何らかの理由で、私の QTableView は単一の信号を発しないようです。最初はプログラムで任意のスロットに接続しようとしましたが、GUI から Signal/Slot Editor を使用しても、どの信号またはスロットを選択しても、何も起こらないことに気付きました。

多くの調査の後に気付いた詳細の 1 つは、Qt のドキュメントで「インデックスが有効な場合にのみ信号が発行される」と指定されているため、これが私のモデルの問題である可能性があることを理解しています。

ただし、何が問題なのか、どうすれば修正できるのか、まだわかりません。セルの表示は、私が持っているすべてのモデルで完全に正常に機能しますが、正しいシグナリング動作を提供しているようには見えないため、問題のあるコードを実際に検出して投稿することはできません.

編集を無効にしてみましたが、これは Mac OS X Lion 10.7.5 でテストしています。

助けていただければ幸いです。これは私の最初の質問ですが、他の人からの質問から長い間恩恵を受けてきました。そうです、私は徹底的に解決策を探しました。

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

c++ - シグナル/スロットを使用して循環依存を回避しますか?

main が多数の子グラフィック項目を作成するグラフィック項目 (親) を作成する C++ Qt コードの洗練されていないチャンクがあります。子と親はお互いのメソッドを呼び出す必要があります。つまり、親は子に何かをするように指示する必要があります (移動、色の変更など)。両方が互いのメソッドを呼び出すと、見苦しい循環コードが発生し、C2027 エラーを回避するのにイライラするようになります。子と親の間の通信手段としてカスタム シグナル/スロット システムを使用することは意味がありますか? それとも、現在の設計にとどまり、これらの種類のバグを解決しようとするべきでしょうか?

たとえば、次のコード (私の現在の設計) は C2027 を生成します。

メインウィンドウ:

フー:

バー:

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

c++ - Q_ENUMS are "undefined" in QML?

Enums are not working out for me.

  • I have registered them with Q_ENUMS()
  • I did not forget the Q_OBJECT macro
  • the type is registered using qmlRegisterType()
  • the module is imported in QML

In short, everything is "by-the-book" but for some reason I continue getting undefined for each and every enum in QML. Am I missing something?

...

...

EDIT: Also note that the registered enums are indeed available to use for the metasystem, for some reason they do not work in QML.

UPDATE: I just found this bug: https://bugreports.qt.io/browse/QTBUG-33248 But unlike that bug my root component is a bare UI not a custom element with UI as its root.

Turns out that it is actually possible to use enum values form QML in console.log(), the following code is actually working.

and...

Output is:

So I guess there is another problem besides "you are not using it correctly"... It might have to do with the bug I mentioned above, and the fact that when I instantiate the UI element, I actually instantiate a QML component which is a tree of objects with the UI as the root. While this doesn't prove to be any problem for working with pointers from C++ with the full QML objects, it does seem to mess enums for some reason.

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

qt - QNetworkRequestを使用してjpgで更新Qlabelを使用するには?

PyQt4 を使用して、Qlabel を使用して別のウィンドウに Web ベースの画像を表示するフォームを作成しています。フォームのボタンをクリックすると、フォームのテーブル セルから新しい画像の URL を読み取って、Qlabel が新しい画像で更新されるはずです。

私が抱えている問題は、setPixmap() プロパティを設定することで更新できるクラス オブジェクトとして Qlabel を作成する方法を理解していないことです。これまでに書いたものは次のとおりです。

コードは実行されますが、ImageLabel クラスが呼び出されると、URL からの初期テキストで QLabel が作成されますが、画像は取得されず、Qlabel はすぐにビューから削除されます。

これを機能させる方法についてのヒントをいただければ幸いです。