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

组件: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 实现结果

手动输入处理意见

下拉框选择默认处理意见

模糊匹配

QT实现输入框与下拉框提示并可模糊匹配的更多相关文章

  1. vue实现下拉框全选和输入匹配

    实际项目中的一个需求: 点击文本框,弹出带有复选框的选项,然后获取选中项的数据,传给后面的一个功能.在文本框输入内容,也会动态的匹配下拉列表,并且列表带有全选功能. 朴素的效果图: 我选择了用vue实 ...

  2. z-blog博客组插件openSug.js百度搜索下拉框提示代码

      z-blog安装openSug插件即可获得带有“搜索框提示”功能的搜索框,让z-blog搜索更便捷! https://www.opensug.org/.../opensug_z-blog_v1.0 ...

  3. 自定义SWT控件二之自定义多选下拉框

    2.自定义下拉多选框 package com.view.control.select; import java.util.ArrayList; import java.util.HashMap; im ...

  4. 微信内置浏览器中,点击下拉框出现页面乱跳转现象(iphone)

    微信内置浏览器中,点击下拉框出现页面乱跳转现象(iphone) 前言: 这是小菜博客的第三篇文章.一直认为自己可以表达的东西太过简单,难以上台面,总是吝啬地不肯写.就算是写,也不知道从何开始.在同事的 ...

  5. easyui combobox点击输入框弹出下拉框

    由于easyui combobox需要点击下拉箭头才能下拉,不能像select标签那样点击输入框就下拉,所以觉得不太方便,查看了一下,combobox弹出框是一个div,原本想在他的输入框的点击事件中 ...

  6. struts2 jsp表单提交后保留表单中输入框中的值 下拉框select与input

    原文地址:struts2 jsp表单提交后保留表单中输入框中的值 下拉框select与input jsp页面 1     function dosearch() {2         if ($(&q ...

  7. Qt颜色下拉框

    上周为了用Qt写一个类似颜色下拉框的东西,查阅了网上的多数相关资料,依然没有我想要的.终于在周四的时候下定决心重写QCombobox类来实现功能,现在把它贴出来,望看到的人,批评指正.废话不多说,先上 ...

  8. 背水一战 Windows 10 (105) - 通知(Toast): 带按钮的 toast, 带输入的 toast(文本输入框,下拉选择框)

    [源码下载] 背水一战 Windows 10 (105) - 通知(Toast): 带按钮的 toast, 带输入的 toast(文本输入框,下拉选择框) 作者:webabcd 介绍背水一战 Wind ...

  9. jQuery插件–jqueryflexselect下拉框自动提示

    原理:用户在文本框中输入一个字符(或输入字符的首字母),然后利用ajax,从后台服务器中进行检索,组装后并返回到页面,页面通过javascript进行解析,在一个层里面显示出来. 类似的效果如下: & ...

随机推荐

  1. Broken robot CodeForces - 24D (三对角矩阵简化高斯消元+概率dp)

    题意: 有一个N行M列的矩阵,机器人最初位于第i行和第j列.然后,机器人可以在每一步都转到另一个单元.目的是转到最底部(第N个)行.机器人可以停留在当前单元格处,向左移动,向右移动或移动到当前位置下方 ...

  2. hdu2669Romantic (扩展欧几里德)

    Problem Description The Sky is Sprite. The Birds is Fly in the Sky. The Wind is Wonderful. Blew Thro ...

  3. 2019牛客暑期多校训练营(第四场)k题、j题

    传送门 k题: 题意: 给你一串由数字构成的字符串,你从这个字符串中找子字符串使这个字符串是300的倍数 题解: 这道题和第三场的B题极其相似 首先可以把是三百的倍数分开,必须要是100和3的倍数 是 ...

  4. AtCoder Beginner Contest 181 E - Transformable Teacher (贪心,二分)

    题意:有一长度为奇数\(n\)的数组\(a\),和长度为\(m\)的数组\(b\),现要求从\(b\)中选择一个数放到\(a\)中,并将\(a\)分成\((n+1)/2\)个数对,求最小的所有数对差的 ...

  5. Java 在Word中添加多行图片水印

    Word中设置水印效果时,不论是文本水印或者是图片水印都只能添加单个文字或者图片到Word页面,效果比较单一,本文通过Java代码示例介绍如何在页面中添加多行图片水印效果,即水印效果以多个图片平铺到页 ...

  6. Kafka官方文档V2.7

    1.开始 1.1 简介 什么是事件流? 事件流相当于人体的中枢神经系统的数字化.它是 "永远在线 "世界的技术基础,在这个世界里,业务越来越多地被软件定义和自动化,软件的用户更是软 ...

  7. JPG学习笔记1(附完整代码)

    #topics h2 { background: rgba(43, 102, 149, 1); border-radius: 6px; box-shadow: 0 0 1px rgba(95, 90, ...

  8. leetcode17 电话号码的字母组合 dfs

    就dfs吧.... 然后,我傻了.前一道题不用考虑空,这道题就要考虑.... 还有注意vector要引用传递 class Solution { public: void dfs(string temp ...

  9. Linux 驱动框架---input子系统

    input 子系统也是作为内核的一个字符设备模块存在的,所以他也是字符设备自然也会有字符设备的文件接口.input子系统的注册过程主要分为两步,先注册了一个input class然后再注册一个字符设备 ...

  10. CNN可视化技术总结(四)--可视化工具与项目

    CNN可视化技术总结(一)-特征图可视化 CNN可视化技术总结(二)--卷积核可视化 CNN可视化技术总结(三)--类可视化 导言: 前面介绍了可视化的三种方法--特征图可视化,卷积核可视化,类可视化 ...