問題タブ [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.
c++ - 他のクラスで発生したイベントについて学ぶ
私は2つのクラスを持っています:
と
AdaptedWidget
オブジェクトからオブジェクトで発生するイベントに関する情報を取得する必要がありWindowManager
ます。どうすればよいですか?
c++ - QCoreApplication::postEvent から受け取った QEvent を転送しても安全ですか?
複数のスレッドが実行されている QT C++ アプリケーションがあり、スレッドは QCoreApplication::postEvent メカニズムを使用して情報を相互に送信します。QCoreApplication::postEvent のドキュメントには、イベントをヒープに割り当てる必要があること、およびイベントがポストされた後にイベントにアクセスするのは安全ではないことが明示的に記載されています。
http://doc.qt.io/qt-5/qcoreapplication.html#postEvent
私のアプリケーションのあるスレッドが、別のスレッドから送信されたイベント (QObject::event を介して) を受信すると、postEvent メソッドを介して別のスレッドにイベントを「転送」することがよくあります。 これは安全ですか?代わりに、オリジナルのコピーである新しいイベントを作成する必要がありますか? 私のアプリケーションはまったくクラッシュしていません....しかし、それはリスクがないという意味ではありません。 QT イベントが「投稿された」と見なされるのはいつですか?
c++ - QEvent を無視する代わりに破棄する方法
2 つのウィジェットがParentWidget
あり、ChildWidget
どちらも から派生しQWidget
、オーバーライドしていますvoid dragEnterEvent(QDragEnterEvent *event)
。
ChildWidget
に含まれるようになりましたParentWidget
。ここで、特定のQDragEvent*
呼び出しevent
が に対して有効でParentWidget
あるChildWidget
と仮定し、dragEnterEvent
forChildWidget
が呼び出されたと仮定します。
event->ignore()
これで、イベント for を無視するために呼び出すことができますChildWidget
が、その後dragEnterEvent
forParentWidget
が呼び出されます。
そして、これは私の問題です。dragEnterEvent
イベントが で既に破棄されている場合、 forParentWidget
が呼び出されることは望ましくありませんChildWidget
。
簡単に言えば、イベントを無視したくないだけでなく、 of 内でイベントを完全に破棄する必要がdragEnterEvent
ありChildWidget
ます。
ParentWidget
とChildWidget
が疎結合コンポーネントであるという仮定の下で、どのようにそのような動作を実現できますか?
最小限の例
次の例は、私が達成しようとしていることを示しており、ある意味で実行可能なアプローチでもあります。より複雑なシナリオの場合、コードが過度に複雑になります。
ChildWidget
は、で終わるファイル名のドロップを受け入れますがtxt
、ParentWidget
は、 によってすでに無視されているものを除いて、すべてのドロップを受け入れますChildWidget
。
main.cpp
ParentWidget.h
ChildWidget.h
qt - QCombobox は、バックスペースを押すと「HELLO」と書き込みます
Qcombobox->linEdit() を押して Backpace キーを押し、すべてのテキストをクリアしたときに信号を傍受したい。私はウェブで見たことがあり、このコードを書いていますが、うまくいきません。keypressevent関数が呼び出されていないようです..いくつかのヒント???