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 实现结果
手动输入处理意见
下拉框选择默认处理意见
模糊匹配
QT实现输入框与下拉框提示并可模糊匹配的更多相关文章
- vue实现下拉框全选和输入匹配
实际项目中的一个需求: 点击文本框,弹出带有复选框的选项,然后获取选中项的数据,传给后面的一个功能.在文本框输入内容,也会动态的匹配下拉列表,并且列表带有全选功能. 朴素的效果图: 我选择了用vue实 ...
- z-blog博客组插件openSug.js百度搜索下拉框提示代码
z-blog安装openSug插件即可获得带有“搜索框提示”功能的搜索框,让z-blog搜索更便捷! https://www.opensug.org/.../opensug_z-blog_v1.0 ...
- 自定义SWT控件二之自定义多选下拉框
2.自定义下拉多选框 package com.view.control.select; import java.util.ArrayList; import java.util.HashMap; im ...
- 微信内置浏览器中,点击下拉框出现页面乱跳转现象(iphone)
微信内置浏览器中,点击下拉框出现页面乱跳转现象(iphone) 前言: 这是小菜博客的第三篇文章.一直认为自己可以表达的东西太过简单,难以上台面,总是吝啬地不肯写.就算是写,也不知道从何开始.在同事的 ...
- easyui combobox点击输入框弹出下拉框
由于easyui combobox需要点击下拉箭头才能下拉,不能像select标签那样点击输入框就下拉,所以觉得不太方便,查看了一下,combobox弹出框是一个div,原本想在他的输入框的点击事件中 ...
- struts2 jsp表单提交后保留表单中输入框中的值 下拉框select与input
原文地址:struts2 jsp表单提交后保留表单中输入框中的值 下拉框select与input jsp页面 1 function dosearch() {2 if ($(&q ...
- Qt颜色下拉框
上周为了用Qt写一个类似颜色下拉框的东西,查阅了网上的多数相关资料,依然没有我想要的.终于在周四的时候下定决心重写QCombobox类来实现功能,现在把它贴出来,望看到的人,批评指正.废话不多说,先上 ...
- 背水一战 Windows 10 (105) - 通知(Toast): 带按钮的 toast, 带输入的 toast(文本输入框,下拉选择框)
[源码下载] 背水一战 Windows 10 (105) - 通知(Toast): 带按钮的 toast, 带输入的 toast(文本输入框,下拉选择框) 作者:webabcd 介绍背水一战 Wind ...
- jQuery插件–jqueryflexselect下拉框自动提示
原理:用户在文本框中输入一个字符(或输入字符的首字母),然后利用ajax,从后台服务器中进行检索,组装后并返回到页面,页面通过javascript进行解析,在一个层里面显示出来. 类似的效果如下: & ...
随机推荐
- Kubernetes-5-2:Harbor仓库的几种高可用方案与搭建
高可用Harbor搭建 思路及介绍 Harbor官方有推出主从架构和双主架构来实现Harbor的高可用及数据备份. 一.主从架构: 说白了,就是往一台Harbor仓库中push镜像,然后再通过这 ...
- B 明码
B 明码 :汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛. 16点阵的字库把每个汉字看成是16x16个像素信息.并把这些信息记录在字节中. 一个字节可以存储8位信息,用32个字节就 ...
- PTA甲级—STL使用
1051 Pop Sequence (25分) [stack] 简答的栈模拟题,只要把过程想清楚就能做出来. 扫描到某个元素时候,假如比栈顶元素还大,说明包括其本身的在内的数字都应该入栈.将栈顶元素和 ...
- P2120 [ZJOI2007] 仓库建设(斜率优化DP)
题意:\(1\sim N\) 号工厂,第\(i\) 个工厂有\(P_i\)个成品,第\(i\)个工厂建立仓库需要\(C_i\)的费用,该工厂距离第一个工厂的距离为\(X_i\),编号小的工厂只能往编号 ...
- 迪杰斯特拉+拆点 Deliver the Cake - HDU 6805
题意: t组输入,给你n个点m条边.你需要输出从s点到t点的最短距离,然后是m条边,每条边输入信息为: a,b,c 表示从a点到b点的一个无向边长度为c 每一个点会有一个属性L.R或M 如果a和b一个 ...
- Educational Codeforces Round 97 (Rated for Div. 2) D. Minimal Height Tree (贪心)
题意:有一个从根节点\(BFS\)得来的序列(每次\(bfs\)子节点的时候保证是升序放入队列的),现在让你还原树(没必要和之前相同),问能构造出的最小的树的深度. 题解:不看根节点,我们从第二个位置 ...
- Linux系统编程【1】——编写more命令
背景介绍 笔者知识背景 笔者接触Linux快一年了.理论知识方面:学习了操作系统基础知识,了解进程调度.内存分配.文件管理.磁盘I/O这些基本的概念. 实操方面:会使用Linux简单命令,在嵌入式系统 ...
- 流媒体传输协议之 RTP (上篇)
本系列文章将整理各个流媒体传输协议,包括 RTP/RTCP,RTMP,希望通过深入梳理协议的设计细节,能够给流媒体领域的开发者带来一定的启发. 作者:逸殊 审核:泰一 介绍 RTP,即 real-ti ...
- c#记两个变量进行值交换
今天腊月二十九啦,无心上班,专注划水.然后就在那里翻帖子消磨时光. 看到了这样一个问题,有人提问为什么 a=b+(b=a)*0 ??? 第一眼看上去,我也有点蒙,仔细推敲了一下,嗯~的确是交换了 ...
- bitbar 网站攻击实验
实验环境 https://github.com/TouwaErioH/security/tree/master/web1 Windows10 Oracle VM VirtualBox Ubuntu16 ...