5

K* ウィンドウがあり、その中にイベントをフィルター処理する必要があるウィジェットがあります。

たとえば、私はそれをクリックする可能性を望んでいません...

どうやってやるの?

イベントフィルタを使用する必要がありますか? この場合、どうするのが一番良いのでしょうか?


しかし、私の問題は、他のようなオブジェクトではなく、TerminalInterface->widget() であるため、ウィジェットをサブクラス化できないことです:\

4

3 に答える 3

2

最初の回答のsetEnabledsledgehammerアプローチに加えて、他に2つのアプローチがあり、そのうちの1つはイベントフィルターを使用することです。

もう1つは、ウィジェットをサブクラス化してから、たとえば、mouse*イベントを再実装することです。それらを空のままにしておくだけで、マウスの相互作用を防ぐことができます。それで:

MyWidget:public QSomeWidget {Q_OBJECT public:MyWidget(QWidget * parent);

保護:void mousePressEvent(QMouseEvent *){} .. etc ..};

于 2008-12-20T17:44:56.897 に答える
1

QWidgetにはenabledプロパティがあります。呼び出すだけwidget->setEnabled(false)で、マウスクリックを受け入れることができなくなります。また、外観を変更する場合もあります。たとえば、aQPushButtonはグレー表示されます。

イベントフィルターは、あなたが望むものに対してやり過ぎのように聞こえます。

于 2008-12-20T16:46:53.097 に答える
1

それはあなたが望むもののように見えeventFilter()ます。

これについて説明している Qt ドキュメントのセクションは次のとおりです: Event Filters

基本的にはQObject、仮想関数を継承して実装するクラスを作成する必要がありますeventFilter()。次に、フィルタをパラメータとして使用してフィルタリングするオブジェクトでinstallEventFilter()メソッドを呼び出します。

于 2008-12-23T16:55:34.793 に答える