QComboBox忽略键盘输入

时间:2015-10-20 08:28:37

标签: python c++ qt pyside

QComboBox的下拉列表打开时,键盘输入被用作搜索元素的(不是特别聪明的)方式。我想禁用它并将键盘事件的处理传播到父窗口小部件。怎么会这样呢?我尝试在子类中重新实现keyPressEvent,但显然这不起作用,因为该函数不是在键盘输入时被调用的函数。

1 个答案:

答案 0 :(得分: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());