繁体   English   中英

如何在Qt中禁用QComboBox的快捷方式?

[英]How to disable shortcuts for QComboBox in qt?

我在网上搜索了答案,但并未真正找到能够解决问题的答案。 我的问题是:我有一个QComboBox ,比方说我在此添加了三项:

ui->comboBox->addItem("First");
ui->comboBox->addItem("Second");
ui->comboBox->addItem("Third");

然后,如果我按键盘上的S ,则项目将更改为Second ,如果按T ,则项目将仅更改为Third

如何禁用此功能?

一个可能的解决方案是实现一个eventfilter ,以防止在QComboBox中使用字母:

#include <QApplication>
#include <QComboBox>
#include <QKeyEvent>

class Helper: public QObject{
    QComboBox *m_combo;
public:
    using QObject::QObject;
    void setComboBox(QComboBox *combo){
        m_combo = combo;
        m_combo->installEventFilter(this);
    }
    bool eventFilter(QObject *watched, QEvent *event){
        if(m_combo){
            if(m_combo == watched && event->type() == QEvent::KeyPress){
               QKeyEvent *ke = static_cast<QKeyEvent *>(event);
               if(!ke->text().isEmpty())
                    return true;
            }
        }
        return QObject::eventFilter(watched, event);
    }
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QComboBox w;
    w.addItems({"First", "Second","Third"});
    Helper helper;
    helper.setComboBox(&w);
    w.show();
    return a.exec();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM