【问题标题】:QComboBox Ignore Keyboard InputQComboBox 忽略键盘输入
【发布时间】:2015-10-20 08:28:36
【问题描述】:

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

【问题讨论】:

    标签: python c++ qt pyside


    【解决方案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());
    

    【讨论】:

      猜你喜欢
      • 2011-04-24
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 2021-07-29
      • 2017-06-03
      • 1970-01-01
      相关资源
      最近更新 更多