引言

本文有两个例子,示例一中通过在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实现查找功能相关推荐

  1. QT中使用OpenGL绘制图形

    Qt Creator中的3D绘图及动画教程(参照NeHe) 刚刚学习了Qt Creator,发现Qt提供了QtOpenGL模块,对OpenGL做了不错的封装,这使得我们可以很轻松地在Qt程序中使用Op ...

  2. Qt中使用OpenGL进行绘图

    Qt Creator中的3D绘图及动画教程(参照NeHe) 刚刚学习了Qt Creator,发现Qt提供了QtOpenGL模块,对OpenGL做了不错的封装,这使得我们可以很轻松地在Qt程序中使用Op ...

  3. 【Qt】简单Qt文本查找功能

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 程序设计 04. 执行结果 05. 附录 01. 概述 以前都用设计器设计界面,而这次我们用代码实现一个简单的查找对话框. ...

  4. C#实现局部峰值查找,功能对应Matlab中的findpeaks.m

    C#实现局部峰值查找,功能对应Matlab中的findpeaks.m 原文:C#实现局部峰值查找,功能对应Matlab中的findpeaks.m 相关算法的原理参考Ronny,地址:图像分析:投影曲线 ...

  5. QT中QTableWidget清空或删除内容功能

    今天使用到了QT中QTableWidget的清空和删除功能,特地整理出. 参考https://blog.csdn.net/qq_16093323/article/details/79226349 如下 ...

  6. mfc搜索新建access字段_vs2010MFC中使用ODBC链接ACCESS数据库,怎样编写查找功能?...

    首先谢谢大家了~ 因为数据库中数据会很多,所以需要用到查找功能来定位相关数据. 我希望是读取一个EDIT中的数据来查询相应的数据. DDX_Control(pDX, IDC_EDIT_FINDIC, ...

  7. QT -- TcpSocket实例,使用Qt中的tcp通信协议,构建客户端和服务端,实现局域网通信软件功能

    Qt中使用Tcp构建通信客户端实现聊天信息发送连接等 1.简介 2.项目创建和界面构建 1)流程图 2)项目构建 3)界面构建 3.代码设计 1)项目pro添加 2)客户端设计 a. clientwi ...

  8. 数据结构与算法之美 32 字符串匹配基础(中):如何实现文本编辑器中的查找功能

    如何实现文本编辑器中的查找功能 背景 BM 算法的核心思想 BM 算法原理分析 1. 坏字符规则 2. 好后缀规则 BM 算法代码实现 背景 文本编辑器中的查找替换功能,我想你应该不陌生吧?比如,我们 ...

  9. QT中QPrinter打印功能

    这两天处理了一下QT程序连接网络打印机执行打印的功能 描述:QT程序运行在Linux.Windows平台,软件运行过程中可根据用户的需要生成一系列的报表,现在需要将这些数据自动布局成报表的格式,并实现 ...

最新文章

  1. WebClient UI framework - how tree proxy structure node is rendered
  2. heka 输出到mysql_用php与mysql的电子贺卡程序
  3. Ubuntu server搭建vsftpd小记
  4. 实习踩坑之路:LocalDateTime计算间隔天数,compareTo/Period的beetween方法导致的bug
  5. arcgis之建模实现矢量图层批量按属性分割导出Kmz文件
  6. Microsoft Office 2010组件介绍
  7. MacBook入门之——添加打印机
  8. RGB VGA显示时序
  9. mysql datasource.url_DataSource配置
  10. webrtc VAD 算法
  11. 因涉政内容导致域名被封禁
  12. 数据推荐 | 自然对话语音数据集
  13. 萌系外表+丰富功能,i宝机器人成CES人气展品
  14. logit回归模型_你们要的二项Logit模型在这里——离散选择模型之八
  15. 宇宙第一 IDE 霸主,换人了?
  16. react类组件中父组件调用子组件函数
  17. 补码一位乘法-一般乘法与Booth的证明与原理
  18. 保护好大脑的海马区,老了也不怕健忘
  19. 从世界500强到破产重整,渤海钢铁到底经历了什么?
  20. 常见对儿童的精神虐待行为及原因分析

热门文章

  1. 慢sql治理经典案例分享
  2. 浅谈分布式一致性:Raft 与 SOFAJRaft
  3. 使用Istio进行多集群部署管理(2):单控制平面Gateway连接拓扑
  4. 在 Apache Spark 中利用 HyperLogLog 函数实现高级分析
  5. 学习笔记CB012: LSTM 简单实现、完整实现、torch、小说训练word2vec lstm机器人
  6. 通俗的讲,这就是容器CPU隔离的底层实现机制
  7. 想在边缘运行计算机视觉程序?先来迎接挑战!
  8. 数据库怎么选择?终于有人讲明白了
  9. 如何保证 HBase 服务的高可用?看看这份 HBase 可用性分析与高可用实践吧!
  10. Spring中的9种设计模式汇总