2008-12-20 24 views
5

我有一个K *窗口,并在其中,这就需要过滤的事件窗口小部件。上QWidget的安装EventFilter(qt4.4.3/KDE4)

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

我怎么能这样做?

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


但我的问题是,我不能继承我的小工具,因为它是一个TerminalInterface->部件(),而不是对象与其他人一样:\

回答

2

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

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

进myWidget:公共QSomeWidget { Q_OBJECT 市民: 进myWidget(QWidget的*父);

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

+0

但我的问题是,我不能继承我的小部件,因为它是一个 TerminalInterface-> widget() – Giancarlo 2008-12-21 17:22:22

1

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

事件过滤听起来像矫枉过正你想要什么。

+0

这不是我想要的东西。我需要*过滤*事件,而不是禁用它们... – Giancarlo 2008-12-21 17:23:42

1

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

这里的Qt的文档的是谈论它的部分: Event Filters

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