我有一個K *窗口,並在其中,這就需要過濾的事件窗口小部件。上QWidget的安裝EventFilter(qt4.4.3/KDE4)
例如我不想單擊它的可能性...
我怎麼能這樣做?
有我使用eventfilters?在這種情況下,最好的方法是什麼?
但我的問題是,我不能繼承我的小工具,因爲它是一個TerminalInterface->部件(),而不是對象與其他人一樣:\
我有一個K *窗口,並在其中,這就需要過濾的事件窗口小部件。上QWidget的安裝EventFilter(qt4.4.3/KDE4)
例如我不想單擊它的可能性...
我怎麼能這樣做?
有我使用eventfilters?在這種情況下,最好的方法是什麼?
但我的問題是,我不能繼承我的小工具,因爲它是一個TerminalInterface->部件(),而不是對象與其他人一樣:\
除了在第一個答案的setEnabled大錘的方法,還有其他兩種方法,其中之一是使用eventfilters。
另一個是繼承窗口小部件,然後重新實現,也就是說,鼠標*事件。簡單地將它們留空將防止任何鼠標交互。所以:
進myWidget:公共QSomeWidget { Q_OBJECT 市民: 進myWidget(QWidget的*父);
protected: void mousePressEvent(QMouseEvent *){} ..等.. };
QWidget中有一個enabled
屬性。只需撥打widget->setEnabled(false)
,這將防止它接受鼠標點擊。它也可能會修改其外觀:例如QPushButton
將變灰。
事件過濾聽起來像矯枉過正你想要什麼。
這不是我想要的東西。我需要*過濾*事件,而不是禁用它們... – Giancarlo 2008-12-21 17:23:42
看起來eventFilter()
是你想要的。
這裏的Qt的文檔的是談論它的部分: Event Filters
基本上,你必須創建一個繼承QObject
一類,然後實現虛擬功能eventFilter()
。然後在要用過濾器作爲參數過濾的對象上調用installEventFilter()方法。
但我的問題是,我不能繼承我的小部件,因爲它是一個 TerminalInterface-> widget() – Giancarlo 2008-12-21 17:22:22