QComboBox的下拉列表打开时,键盘输入被用作一种搜索元素的方式(不是特别聪明)。我想禁用此功能并将键盘事件的处理传播到父窗口小部件。如何做到这一点?我试过在子类中重新实现keyPressEvent,但显然不起作用,因为该功能不是在有键盘输入时被调用的功能。

最佳答案

显示弹出窗口时,是QComboBox的 View 接收事件,而不是框本身。您可以在其上放置一个事件过滤器:

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());

关于python - QComboBox忽略键盘输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33231658/

10-16 20:25