問題タブ [qt-events]
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++ - ノンブロッキング方式でQDialogを開く
私はこのように開くQDialogを持っています:
ダイアログは問題なく開きますが、残念ながら、openDialog()を呼び出したときに、ダイアログを閉じた後でも「HelloWorld」は出力されません。ただし、後でまったく関係のない別のファイルダイアログを開くと、メッセージが出力されます。
別のダイアログが開くまでダイアログがブロックされる原因は何ですか?this->dialog->exec();
またはを使用している場合も同じことが起こりthis->dialog->show();
ます。
MyModule::openDialog()
それはボタンのクリックイベントに接続されているスロットであることに注意する価値があるかもしれません。
何か案は?
qt - Qtでのイベント伝播
QtイベントシステムとQEvent
クラスに関するドキュメントだけです。QObject::event()
メソッドの動作に興味があります。ドキュメントには次のように記載されています。
この仮想関数はオブジェクトへのイベントを受け取り、イベントeが認識されて処理された場合はtrueを返す必要があります。
メソッドfalse
から返されるときに期待される動作は何ですか?event()
イベントを処理するために他に何が試みられますか?イベントは自動的に親オブジェクトに転送されますか?
注:ソースが利用可能であることはわかっていますが、コピーはあります。私は理想的には、この動作に対処するドキュメントを探しています。
qt - QT Mobile: QT Mobile アプリケーションで .swf ファイルを再生する方法
QT モバイル アプリケーションで .swf ファイルを再生する方法。?
以下の 2 つの ui->webView->settings()->setAttribute(QWebSettings::PluginsEnabled,true); を適用したので、ui->webView->settings()->setAttribute(QWebSettings::JavascriptEnabled,true);
しかし、まだ .swf ファイルを再生できませんでしたか?
c++ - ホバー イベントの使用
でホバー入力イベントとホバー離脱イベントをキャプチャするのに問題がありますQGraphicsRectItem
。
私はこのオブジェクトをサブクラス化し、hover enter および hover leave ハンドラーを再実装しました... または、少なくとも実装したと思います。また、コンストラクターでホバー イベントの受け入れを true に設定します。
ただし、イベントが発生することはありません。ハンドラ内のブレークポイントはヒットしません。
クラスは次のとおりです。
私が間違っているのは何ですか?
qt - indexWidgetsのQListViewにeventFilterをインストールする
いくつかのコンポーネント(コンボボックス、lineEdit、labelsなど)を含むcustomWidgetsがあります。このcustomWidgetはsetIndexWidget(QModelIndex、QWidget)を使用してQListViewに追加されます。私の要件は、customWidgetの任意のコンポーネントをクリックするとQListViewアイテムが取得されることです。選択/フォーカス。
cutomWidgetからQListViewにEventFilterをインストールするにはどうすればよいですか?customWidgetのイベントフィルターをインストールしました。
ありがとう
c++ - QtQGraphicsViewイベント
View
自分を組み込んだクラスがありますが、QGraphicsView
継承に問題があります。私のコードは次のとおりです。
そしてGame
から継承しView
ます:
paintEvent
クイックcout
インで実装しましたgame
。コンパイルすると、すべてが正常にコンパイルされますが、実行すると、純粋仮想関数が呼び出されたことを示すメッセージが表示され続けます。
私のView
コンストラクターは次のようになります。
どんな助けでも大歓迎です。
qt - PysideQgraphicsSceneはマウスイベントをキャプチャできません
マウスイベントをシーンにアタッチする方法が見つかりません。[表示]を使用しない場合、すべてのイベントがキャプチャされますが、コメントアウトすると、mousePressEventのみが機能します。助けてください。
c++ - Qt GUI イベントの記録と再生
Qt GUI イベントを記録し、スクリプトから再生するためのシンプルで軽量なシステムを実装しようとしています。これは Qt のイベント システムの魔法を使えばかなり簡単だと思っていましたが、理解できない問題に直面しています。
ここに私がやっていることの簡単な要約があります:
録音:
私QApplication.instance().eventFilter()
は興味のあるすべての GUI イベントをキャプチャし*、Python スクリプトに保存します。各ステップは次のようになります。
再生:
上記のスクリプトをワーカー (非 GUI ) スレッドで実行するだけです。(モーダル ダイアログ イベントループの実行中に「メイン」イベントループがブロックされても、スクリプト化されたイベントをアプリケーションに送信し続けたいため、GUI スレッドを使用できません。)
重要なことは、次のpost_event()
2 つのことを行う必要がある関数で発生します。
- まず、電話
QApplication.postEvent(obj, recorded_event)
- すべてのイベントの処理が完了するまで待ちます:**
- 実行中の同じイベントループに特別なイベントを投稿
obj
します。 - 特別なイベントが処理される場合:
- 電話
QApplication.processEvents()
- 続行しても問題ないことを再生スレッドに伝えるフラグを設定します
- 電話
- 実行中の同じイベントループに特別なイベントを投稿
2 番目の部分が完了した後、特別なイベントが記録されたイベントの後にキューに入れられたため、最初の部分 (記録されたイベント) のすべての効果が完了したことを期待しています。
システム全体は、ほとんどの場合、マウス イベント、キー イベントなどで問題なく動作しているように見えます。しかしQAction
、メインのイベントを再生しようとすると、ハンドラーに問題が発生しますQMenuBar
。
何を試しても、アイテムをクリックした結果として生じるすべてのハンドラーの完了のために、再生スレッドを強制的にブロックすることはできないようです。QAction.triggered
QMenu
私が知る限り、ハンドラーが完了する前QApplication.processEvents()
に戻っています。QAction
および/またはの通常のルールを破るQMenu
ウィジェットまたはシグナルについて何か特別なことはありますか? のハンドラーの完了をブロックする方法が必要です。QAction
QApplication.postEvent()
QApplication.processEvents()
QMenu
QAction
[*] すべてのイベントが記録されているわけではありません。私はイベントのみを記録し、他のいくつかのタイプ (イベントや通常のマウスの動きなど)spontaneous()
も除外します。Paint
[**] スクリプト内の次のイベントは、前のイベントによって作成されたウィジェットを参照する可能性があるため、これは重要です。
qt - Qt内部ヘッダーを使用せずにQEventsを圧縮するには?
投稿されたイベント リストを反復するために必要なヘッダーはQCoreApplication::compressEvent
プライベートと見なされるため、Qt の内部ヘッダーに依存せずに同等の機能を取得する方法はありますが、Qt の文書化されたセマンティクスのみに依存しますか?
これは、シグナルとスロットに関する他の質問とは別の質問であることに注意してください。