2015-10-20 109 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());