在QWidget上安装EventFilter(qt4.4.3 / kde4)

时间:2008-12-20 15:30:53

标签: qt event-handling widget kde

我有一个K *窗口,其中包含一个需要过滤事件的小部件。

例如,我不想点击它的可能性......

我该怎么做?

我是否要使用eventfilters?在这种情况下,最好的方法是什么?


但我的问题是我不能将我的小部件子类化,因为它是一个TerminalInterface-> widget(),而不是像其他人一样的对象:\

3 个答案:

答案 0 :(得分:2)

除了第一个答案中的setEnabled大锤方法外,还有另外两种方法,其中一种方法是使用eventfilters。

另一个是子窗口小部件,然后重新实现鼠标*事件。简单地将它们留空将阻止任何鼠标交互。所以:

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

保护:      void mousePressEvent(QMouseEvent *){}      ..等.. };

答案 1 :(得分:1)

QWidget具有enabled属性。只需拨打widget->setEnabled(false),即可阻止其接受鼠标点击。它也可能会修改其外观:例如QPushButton将变灰。

事件过滤器听起来像是你想要的过度杀伤。

答案 2 :(得分:1)

看起来eventFilter()就是你想要的。

以下是讨论它的Qt文档部分: Event Filters

基本上,您必须创建一个继承QObject的类,然后实现虚函数eventFilter()。然后使用过滤器作为参数调用要过滤的对象上的installEventFilter()方法。