2008-12-20 28 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()方法。