qt中使用QCompleter实现查找功能
引言
本文有两个例子,示例一中通过在combox中输入文本可以实现自动补全,用户根据提示列表,选中某一个信息,作为要搜索的字符串。示例二中用户输入要搜索的文本在行编辑器中,当输入的文本在搜索的字符串列表中时,会出现相应的提示列表,用户可选择提示列表中的字符串。示例二没有搜索按钮,只是简单的根据输入的字符串可以检索到被搜索的列表中的字符串。
示例
项目的结构
示例一和示例二在同一个工程下,没有只是用两个函数区分开了,一个是下拉列表的搜索功能,一个是行编辑器的搜索功能。下面看具体的实现。
代码部分:
main.cpp
#include "dialog.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Dialog w;w.show();return a.exec();
}
dialog.h
#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>/********************************************======功能描述:=======1.根据输入的字符串进行匹配查找。注意:Qt::MatchStartsWith----匹配开头Qt::MatchEndsWith----匹配结尾Qt::MatchContains----匹配内容
********************************************/QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACEclass Dialog : public QDialog
{Q_OBJECTpublic:Dialog(QWidget *parent = nullptr);~Dialog();
protected:void initCombox();//初始化comboxvoid initLineEdit();//初始化行编辑器
private slots:void on_searchBtn_clicked();//搜索按钮private:Ui::Dialog *ui;
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include <QCompleter>
#include <QDebug>Dialog::Dialog(QWidget *parent): QDialog(parent), ui(new Ui::Dialog)
{ui->setupUi(this);initCombox();initLineEdit();
}Dialog::~Dialog()
{delete ui;
}void Dialog::initCombox()
{QStringList strList;strList<<QStringLiteral("开始")<<"ejis"<<QStringLiteral("及深度")<<QStringLiteral("随时")<<QStringLiteral("技术的")<<"sdsf";ui->comboBox->addItems(strList);ui->comboBox->setCurrentText("");ui->comboBox->setEditable(true);QCompleter *completer = new QCompleter(strList,this);completer->setFilterMode(Qt::MatchContains);//匹配内容ui->comboBox->setCompleter(completer);
}void Dialog::initLineEdit()
{QStringList strList;strList<<QStringLiteral("开始")<<"ejis"<<QStringLiteral("及深度")<<QStringLiteral("随时")<<QStringLiteral("技术的")<<"sdsf";QCompleter *completer = new QCompleter(strList,this);completer->setFilterMode(Qt::MatchContains);//匹配内容ui->lineEdit->setCompleter(completer);
}void Dialog::on_searchBtn_clicked()
{qDebug()<<QStringLiteral("被搜索的字符串是:")<<ui->comboBox->currentText();
}
ui文件中的结构
程序运行的结果:
以上便是搜索功能,但是值得注意的是:
设置搜索的类型,
Qt::MatchStartsWith----匹配开头
Qt::MatchEndsWith----匹配结尾
Qt::MatchContains----匹配内容
在函数setFilterMode中设置不同的参数会有不同的结果。
qt中使用QCompleter实现查找功能相关推荐
- QT中使用OpenGL绘制图形
Qt Creator中的3D绘图及动画教程(参照NeHe) 刚刚学习了Qt Creator,发现Qt提供了QtOpenGL模块,对OpenGL做了不错的封装,这使得我们可以很轻松地在Qt程序中使用Op ...
- Qt中使用OpenGL进行绘图
Qt Creator中的3D绘图及动画教程(参照NeHe) 刚刚学习了Qt Creator,发现Qt提供了QtOpenGL模块,对OpenGL做了不错的封装,这使得我们可以很轻松地在Qt程序中使用Op ...
- 【Qt】简单Qt文本查找功能
00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 程序设计 04. 执行结果 05. 附录 01. 概述 以前都用设计器设计界面,而这次我们用代码实现一个简单的查找对话框. ...
- C#实现局部峰值查找,功能对应Matlab中的findpeaks.m
C#实现局部峰值查找,功能对应Matlab中的findpeaks.m 原文:C#实现局部峰值查找,功能对应Matlab中的findpeaks.m 相关算法的原理参考Ronny,地址:图像分析:投影曲线 ...
- QT中QTableWidget清空或删除内容功能
今天使用到了QT中QTableWidget的清空和删除功能,特地整理出. 参考https://blog.csdn.net/qq_16093323/article/details/79226349 如下 ...
- mfc搜索新建access字段_vs2010MFC中使用ODBC链接ACCESS数据库,怎样编写查找功能?...
首先谢谢大家了~ 因为数据库中数据会很多,所以需要用到查找功能来定位相关数据. 我希望是读取一个EDIT中的数据来查询相应的数据. DDX_Control(pDX, IDC_EDIT_FINDIC, ...
- QT -- TcpSocket实例,使用Qt中的tcp通信协议,构建客户端和服务端,实现局域网通信软件功能
Qt中使用Tcp构建通信客户端实现聊天信息发送连接等 1.简介 2.项目创建和界面构建 1)流程图 2)项目构建 3)界面构建 3.代码设计 1)项目pro添加 2)客户端设计 a. clientwi ...
- 数据结构与算法之美 32 字符串匹配基础(中):如何实现文本编辑器中的查找功能
如何实现文本编辑器中的查找功能 背景 BM 算法的核心思想 BM 算法原理分析 1. 坏字符规则 2. 好后缀规则 BM 算法代码实现 背景 文本编辑器中的查找替换功能,我想你应该不陌生吧?比如,我们 ...
- QT中QPrinter打印功能
这两天处理了一下QT程序连接网络打印机执行打印的功能 描述:QT程序运行在Linux.Windows平台,软件运行过程中可根据用户的需要生成一系列的报表,现在需要将这些数据自动布局成报表的格式,并实现 ...
最新文章
- WebClient UI framework - how tree proxy structure node is rendered
- heka 输出到mysql_用php与mysql的电子贺卡程序
- Ubuntu server搭建vsftpd小记
- 实习踩坑之路:LocalDateTime计算间隔天数,compareTo/Period的beetween方法导致的bug
- arcgis之建模实现矢量图层批量按属性分割导出Kmz文件
- Microsoft Office 2010组件介绍
- MacBook入门之——添加打印机
- RGB VGA显示时序
- mysql datasource.url_DataSource配置
- webrtc VAD 算法
- 因涉政内容导致域名被封禁
- 数据推荐 | 自然对话语音数据集
- 萌系外表+丰富功能,i宝机器人成CES人气展品
- logit回归模型_你们要的二项Logit模型在这里——离散选择模型之八
- 宇宙第一 IDE 霸主,换人了?
- react类组件中父组件调用子组件函数
- 补码一位乘法-一般乘法与Booth的证明与原理
- 保护好大脑的海马区,老了也不怕健忘
- 从世界500强到破产重整,渤海钢铁到底经历了什么?
- 常见对儿童的精神虐待行为及原因分析
热门文章
- 慢sql治理经典案例分享
- 浅谈分布式一致性:Raft 与 SOFAJRaft
- 使用Istio进行多集群部署管理(2):单控制平面Gateway连接拓扑
- 在 Apache Spark 中利用 HyperLogLog 函数实现高级分析
- 学习笔记CB012: LSTM 简单实现、完整实现、torch、小说训练word2vec lstm机器人
- 通俗的讲,这就是容器CPU隔离的底层实现机制
- 想在边缘运行计算机视觉程序?先来迎接挑战!
- 数据库怎么选择?终于有人讲明白了
- 如何保证 HBase 服务的高可用?看看这份 HBase 可用性分析与高可用实践吧!
- Spring中的9种设计模式汇总