1
当QComboBox
的下拉列表打开时,键盘输入用作搜索元素的一种(并不特别聪明)的方式。我想禁用它并将键盘事件的处理传播给父窗口小部件。人们如何去做这件事?我试过在子类中重新实现keyPressEvent
,但显然这不起作用,因为该函数不是在键盘输入时被调用的函数。QComboBox忽略键盘输入
当QComboBox
的下拉列表打开时,键盘输入用作搜索元素的一种(并不特别聪明)的方式。我想禁用它并将键盘事件的处理传播给父窗口小部件。人们如何去做这件事?我试过在子类中重新实现keyPressEvent
,但显然这不起作用,因为该函数不是在键盘输入时被调用的函数。QComboBox忽略键盘输入
当显示弹出窗口时,接收事件的是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());