問題タブ [qeventloop]
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.
c++ - QRunnable で QEventLoop を呼び出す (複数のデバイスに接続するため)
同時に最大 5 つのシリアル デバイスに接続するための QthreadPool があります。各シリアル デバイスは次のように定義されます。
GUI 内でボタンをクリックすると、次のようにシリアル デバイス マネージャーを呼び出しserialManager->startAcquisition(portNames)
ます。
デバイスが接続されたら、デバイスをポーリングします。stop 関数が呼び出されると、スレッドは終了します。readyRead()
内部を埋めるために、信号が放出されていることを期待していsensor->portData
ます:
問題定義:readyRead()
信号が発信されませんでした
。ここで、でイベントを処理するには、スレッドに独自のイベントループが必要であることを読みました。QRunnable
だから私はそれぞれの機能に含めQEventLoop loop
ました。現在トリガーされており、しばらくの間各ポートからデータを受信すると、突然、次のようなセグメンテーション違反でアプリケーションがクラッシュします。Run()
ComPort
readyRead()
c++ - Win32 アプリと QWinMigrate 間のキーボード イベントの管理
Qt ダイアログを従来の Win32 アプリケーションに統合しましたが、Qt->Win32 から伝播するキーボード イベントを管理する方法に少し困惑しています。Qt がイベント (編集ボックスへの入力など) を「処理」しているかどうかをテストし、これらのイベントがホスト アプリケーションに伝播するのを防ぐ方法はありますか?
Win32 アプリケーションには独自の非常に複雑なアクセラレータ システムがあり、ネイティブの編集ボックスを操作する場合、通常、アクセラレータを手動で無効にします。Qtダイアログは複数のアプリケーション間で共有されるウィジェットであるため、これを行うことはできません。
現在、ダイアログ全体でホスト アクセラレータを無効にしてフォーカスを得ていますが、編集ボックスからの kbd イベントの伝播を防ぐように Qt に指示することは可能でしょうか? 理想的には、QtDialogs コードを変更せずに (ただし、必要に応じて変更できますか?)
c++ - 複数の QEventLoops を並行して実行する (QtNetwork の場合)
Qt ネットワークをサポートする Ubuntu/Linux デスクトップで実行される古いプログラムを拡張しようとしています。これらのライブラリと LAN 通信を行うに.exec()
は、QEventLoop を実行して実際に作業を開始する必要があります (つまり、接続の受け入れ、受信、送信など)。
問題
問題は、このイベント ループがメイン プログラムのどこにあるのかわからないことです。その設計について漠然と知っているため、できるだけ独立したソリューションを好みます。
私の考え
main-QEventLoop は必要ないことを既に確認しました。ネットワーキング (つまり、ネスト) のためだけに別のものを作成しても問題ありません。残念ながら、私のプログラムはネストされた - で停止し、メインプログラムも停止しているため、両方のループを並行して実行する方法がわかり.exec()
ません。
したがって、私の主な意図は、実際には Qt-Networking を使用してメイン プログラムを拡張することです。他のソリューションも受け入れています。
c++ - QTimer::SingleShot オブジェクトが削除された後に発生する
この場合、 a が削除され、タイマーが起動された後、実行されtimerSlot()
ますか? 非常にまれなクラッシュが発生していますが、それがこのロジックの怪しいものによるものかどうかはわかりません。
c++ - 別のイベントループなしで QFileDialog::getOpenFileName を実行しますか?
私は現在QFileDialog::getOpenFileNameを使用しています。ただし、この記事で提案されているように、ダイアログが開いているときにメイン アプリケーションを閉じると、これがクラッシュします。クラッシュを再現する方法の例をここで見ることができます:
here でQFileDialog
説明されているように、代わりに通常のコンストラクターを使用できます。ただし、ネイティブの Windows ファイルを開くダイアログが表示されないようです。
クラッシュしないプログラムを取得し、Qt を介してネイティブの Windows ファイルを開くダイアログを使用する方法はありますか?
c++ - QUdpSocket 高速メッセージ読み取り
みんな!
QUdpSocket と readyRead シグナルの操作に奇妙な問題があります。思ったように機能していないと言えます。
QUdpSocket を作成してポートにバインドし、readyRead シグナルをスロットに接続して、以下のように保留中のデータグラムをすべて読み取ります。
そして私のreadBuffersコード
Qt::QueuedConnection を使用して問題を解決したと思っていましたが、今日、プロジェクトに別のウィジェットを追加し、100 ミリ秒ごとに更新しました。方法はわかりませんが、スロットが 2 秒後に信号を出さなくなりました。
タイマー間隔または送信データ レートを 1 秒に変更すると、すべて問題ありません。
すべてのクラスとウィジェットはメイン プログラムのスレッドにあり、別のスレッドは使用していませんが、使用する必要があるようです。
では、Qt eventloop によってシグナルがドロップされたのはなぜですか?
ソケットの状態を確認しましたが、バウンド後に変化しませんでした。
前もって感謝します
python - QtCore.QEventLoop() とリンクした後、QRadioButton をクリックできません
数日前、for ループで QRadioButton をチェック/チェック解除しなければならない状況がありました。これは、 QRadioButtonが毎回チェックされるまでループを待っているリンクです?
これを実装QEventLoop
した後、今日までうまくいきました。QRadioButton(pass) ボタンをクリックできるようになりましたが、2 番目の QRadioButton(fail) ではクリックできませんでした。
Fail QRadioButton はハングしたり無効になったりしませんが、クリックすることはできません。
私の QEventLoop コードは次のとおりです。
for ループのコードは次のとおりです。
そして、この radioExclusive 関数はこれを行います:-
この問題がどの時点で発生しているのかわかりません。