2015-10-20 148 views
1

QComboBox的下拉列表打開時,鍵盤輸入用作搜索元素的一種(並不特別聰明)的方式。我想禁用它並將鍵盤事件的處理傳播給父窗口小部件。人們如何去做這件事?我試過在子類中重新實現keyPressEvent,但顯然這不起作用,因爲該函數不是在鍵盤輸入時被調用的函數。QComboBox忽略鍵盤輸入

回答

1

當顯示彈出窗口時,接收事件的是QComboBox的視圖,而不是盒子本身。你可以放置一個事件過濾器:

class Filter : public QObject 
{ 
    Q_OBJECT 
public: 
    bool eventFilter(QObject *object, QEvent *event) 
    { 
     if (event->type() == QEvent::KeyPress) { 
      return true; 
     } 
     return false; 
    } 
}; 

<...> 

QComboBox box; 
box.view()->installEventFilter(new Filter());