zoukankan      html  css  js  c++  java
  • QT实现输入框与下拉框提示并可模糊匹配

    功能:支持下拉框选择、手动输入更改和模糊匹配

    组件:QLineEdit、QComboBox、QCompleter、QStringListModel

    一、组件介绍

    1.1 QLineEdit

    QLineEdit是一个单行文本编辑器,允许用户输入和编辑单行纯文本。明白了其作用,进入封装类QLineEdit源码看下其成员函数。

          主要看下常用的函数和一些自带的信号与槽。

    class Q_WIDGETS_EXPORT QLineEdit : public QWidget

    {

    Q_OBJECT

    Public:

          QString text() const;

          QString displayText() const;

          QString placeholderText() const;

      void setPlaceholderText(const QString &);

      void setCompleter(QCompleter *completer);

      等等

    Q_SIGNALS:

        void textChanged(const QString &);

        void textEdited(const QString &);

        void cursorPositionChanged(int, int);

        void returnPressed();

        void editingFinished();

    void selectionChanged();

    Q_SLOTS:

        void setText(const QString &);

        void clear();

        void selectAll();

        void undo();

        void redo();

    }

    1.2 QcomboBox     

           QComboBox 是下拉列表框组件类,它提供一个下拉列表供用户选择,也可以直接当作一个 QLineEdit 用作输入。

    class Q_WIDGETS_EXPORT QComboBox : public QWidget

    {

    Q_OBJECT

    Public:

        void setEditable(bool editable);

    void setLineEdit(QLineEdit *edit);//和Qlineedit绑定

    void setCompleter(QCompleter *c);//设置模糊匹配

        inline void addItems(const QStringList &texts)//绑定字符串组

            { insertItems(count(), texts); }

    1.3 QCompleter

           QCompleter能实现QLineEdit根据输入自动补全的功能,根据单词列表提示完成单词输入,也可补全文件路径。

           可以设置匹配的模式,匹配是否大小写敏感等。

           setCaseSensitivity(Qt::CaseInsensitive);//大小写不敏感

           setFilterMode(Qt::MatchRecursive);//匹配规则:包含则匹配

           setCompletionMode(QCompleter::UnfilteredPopupCompletion);

    1.4 QStringListModel

           QStringListModel是最简单的模型类,具备向视图提供字符串数据的能力。QStringListModel是一个可编辑的模型,可以为组件提供一系列字符串作为数据。可以将其看作是封装了QStringList的模型。QStringList是一种很常用的数据类型,实际上是一个字符串列表(也就是QList<QString>)。既然是列表,它也就是线性的数据结构,因此,QStringListModel很多时候都会作为QListView或者QComboBox这种只有一列的视图组件的数据模型。

           最基本的 model/view 模型的使用。既然是 model/view,我们会分为两部分:model 和 view。Qt 内置的最简单的一个模型:QStringListModel。接下来,我们再介绍另外的一些内置模型,在此基础上,我们将了解到 Qt 模型的基本架构,以便为最高级的应用——自定义模型——打下坚实的基础。

           model/view(模型/视图)结构是QT中用界面组件显示与编辑数据的一种结构,视图是显示和编辑数据的界面组件,模型是视图与原始数据之间的接口。常见的视图QListView、QTreeView、QTableView,常见的模型QStringListModel、QStandardItemModel。

        //1、读取一个qstring的list

        QStringList indicator;

        indicator << QString(tr("口罩不满足抓拍条件"));

        //2、模型设置此数据

        QStringListModel* string_list_model->setStringList(indicator);

       //3、视图设置此模型

        QCompleter* m_completer->setModel(string_list_model);

    二、简单功能实现

    2.1 DEMO源码

         QLineEdit* m_edit = new(std::nothrow) CTextEdit(this);

        //下拉框匹配,qcombox实现下拉框

         m_box = new(std::nothrow) QComboBox(this);

         m_completer = new(std::nothrow) QCompleter();

        QStringList indicator;

        indicator << QString(tr"AS") << QString(tr"AC") << QString(tr"AFE")<< QString(tr"AF") << QString(tr"ER");

        string_list_model = new QStringListModel();

        string_list_model->setStringList(indicator);//仅显示indicator里面的

        m_completer->setModel(string_list_model);

        m_completer->setCaseSensitivity(Qt::CaseInsensitive);//大小写不敏感

        m_completer->setFilterMode(Qt::MatchRecursive);//匹配规则:包含则匹配

        //m_completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion);

        //m_edit->setCompleter(m_completer);

         m_box->clear();

        m_box->addItems(indicator);

        m_box->setEditable(true);  //设置可编辑

        m_box->setCompleter(m_completer); //模糊匹

        m_edit->setToolTip(“remind”);

        m_box->setLineEdit(m_edit);   //与编辑m_edit绑定

        m_box->setGeometry(11,12,width,higth);

    2.2 实现结果

    手动输入处理意见

    下拉框选择默认处理意见

    模糊匹配

  • 相关阅读:
    Install and Configure OSSEC on Debian 7&8
    手动替换WORDPRESS的GOOGLE字体等加速【非插件】
    LDAP常用命令解析
    Install guide for OpenLDAP and GOsa 2 on Ubuntu & Debian
    Linux 转发 email Redirect local emails to a remote email account
    Ubuntu,忘记了root密码,怎么重置?
    LDAP 原理图解
    CAS实现SSO单点登录原理
    cacti 安装与 与不能显示图像故障解决方案
    LDAP概念和原理
  • 原文地址:https://www.cnblogs.com/huangfuyuan/p/13525672.html
Copyright © 2011-2022 走看看