問題タブ [qevent]

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 に答える
86 参照

c++ - 他のクラスで発生したイベントについて学ぶ

私は2つのクラスを持っています:

AdaptedWidgetオブジェクトからオブジェクトで発生するイベントに関する情報を取得する必要がありWindowManagerます。どうすればよいですか?

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

c++ - QCoreApplication::postEvent から受け取った QEvent を転送しても安全ですか?

複数のスレッドが実行されている QT C++ アプリケーションがあり、スレッドは QCoreApplication::postEvent メカニズムを使用して情報を相互に送信します。QCoreApplication::postEvent のドキュメントには、イベントをヒープに割り当てる必要があること、およびイベントがポストされた後にイベントにアクセスするのは安全ではないことが明示的に記載されています。

http://doc.qt.io/qt-5/qcoreapplication.html#postEvent

私のアプリケーションのあるスレッドが、別のスレッドから送信されたイベント (QObject::event を介して) を受信すると、postEvent メソッドを介して別のスレッドにイベントを「転送」することがよくあります。 これは安全ですか?代わりに、オリジナルのコピーである新しいイベントを作成する必要がありますか? 私のアプリケーションはまったくクラッシュしていません....しかし、それはリスクがないという意味ではありません。 QT イベントが「投稿された」と見なされるのはいつですか?

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

c++ - QEvent を無視する代わりに破棄する方法

2 つのウィジェットがParentWidgetあり、ChildWidgetどちらも から派生しQWidget、オーバーライドしていますvoid dragEnterEvent(QDragEnterEvent *event)

ChildWidgetに含まれるようになりましたParentWidget。ここで、特定のQDragEvent*呼び出しeventが に対して有効でParentWidgetあるChildWidgetと仮定し、dragEnterEventforChildWidgetが呼び出されたと仮定します。

event->ignore()これで、イベント for を無視するために呼び出すことができますChildWidgetが、その後dragEnterEventforParentWidgetが呼び出されます。

そして、これは私の問題です。dragEnterEventイベントが で既に破棄されている場合、 forParentWidgetが呼び出されることは望ましくありませんChildWidget

簡単に言えば、イベントを無視したくないだけでなく、 of 内でイベントを完全に破棄する必要がdragEnterEventありChildWidgetます。

ParentWidgetChildWidgetが疎結合コンポーネントであるという仮定の下で、どのようにそのような動作を実現できますか?

最小限の例

次の例は、私が達成しようとしていることを示しており、ある意味で実行可能なアプローチでもあります。より複雑なシナリオの場合、コードが過度に複雑になります。

ChildWidgetは、で終わるファイル名のドロップを受け入れますがtxtParentWidgetは、 によってすでに無視されているものを除いて、すべてのドロップを受け入れますChildWidget

main.cpp

ParentWidget.h

ChildWidget.h

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

qt - QCombobox は、バックスペースを押すと「HELLO」と書き込みます

Qcombobox->linEdit() を押して Backpace キーを押し、すべてのテキストをクリアしたときに信号を傍受したい。私はウェブで見たことがあり、このコードを書いていますが、うまくいきません。keypressevent関数が呼び出されていないようです..いくつかのヒント???