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中设置不同的参数会有不同的结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动图:程序员才懂的这些!

戳蓝字“CSDN云计算”关注我们哦&#xff01;1. Java VS C2. 功能先上了再说3.高级开发人员作为一个团队进行编程4. 调试CSS5. 编译错误&#xff1a;括号不匹配6.高级开发人员重构代码7. 看实习生编码的时候&#xff0c;我的表情...8.当我尝试进入BIOS9. 虽然很多Bug&#xff0…

表达祝福与喜悦的数字资产——平安夜的特别礼物华为云DAC

平安夜的街灯光闪烁&#xff0c;人们沉浸在节日气氛中&#xff0c;忙着购买礼物&#xff0c;准备晚餐&#xff0c;相互传递感恩与祝愿。华为云DAC数字资产创意平台锁住美好&#xff0c;用数字艺术的形式制作专属节日记忆&#xff0c;有创意的礼物总让人难忘。 独一无二的礼物—…

qt生成无ui界面动态库,有ui界面的动态库,以及含有资源文件和qss文件的动态库

提要 此文分别就qt生成纯代码的动态库&#xff0c;含有ui文件的动态库以及含有资源文件qss文件和切图的动态库。 实现 1.纯代码的生成qt库。即没有ui文件的项目。 打开QtCreate&#xff0c;新建文件&#xff0c;选择library. 接下来填写项目的名称&#xff0c;选择生成的路…

太形象了!什么是边缘计算?最有趣的解释没有之一!

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;云计算就像是天上的云&#xff0c;看得见摸不着&#xff0c;像章鱼的大脑&#xff0c;…

qt中使窗口的大小随窗口的内容大小进行调整

提要 窗口用于显示文本信息&#xff0c;当窗口的文本信息变长&#xff0c;原有窗口的大小不足以显示文本信息。这时就需要一个能够根据窗口要显示的文本信息的长度来调整窗口大小的窗口。 示例 效果图&#xff1a; 窗口内容少的时候提示窗口大小&#xff0c;当窗口要显示的…

看完这篇买车不用坐引擎盖哭啦

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;Kying转自&#xff1a;数据森麟作者介绍&#xff1a;Kying&#xff0…

什么是云计算基础设施? | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;云计算基础设施是内部系统和公共云之间的软件和硬件层&#xff0c;其融合了许多不同的…

如何将本地代码推送至远程仓库_命令简化版本

如何将本地代码推送至远程仓库&#xff1f; 文章目录一、新仓库1. 初始化README.md2. 初始化Git仓库3. 将工作区的代码添加至暂存区4. 将暂存区的变更文件提交到本地仓库5. 将本地仓库和远程仓库建立连接6. 将本地代码push至远程仓库7. 先拉去代码&#xff0c;在push8. 强制推送…

K8S精华问答 | Kubernetes用的是Docker的容器?

kubernetes&#xff0c;简称K8s&#xff0c;是一个开源的&#xff0c;用于管理云平台中多个主机上的容器化的应用&#xff0c;目标是让部署容器化的应用简单并且高,并提供了应用部署&#xff0c;规划&#xff0c;更新&#xff0c;维护的一种机制。今天&#xff0c;我们就来看看…

MyBatis-Plus_断言

MyBatis-Plus 之断言 文章目录1. 断言代码&#xff1a;2. 源码&#xff1a;3. 释义&#xff1a;4. 举个栗子&#xff1a;5. 异常信息&#xff1a;6. 控制台输出定位7. 查看数据库&#xff1a;1. 断言代码&#xff1a; Assert.assertEquals(5, userList.size());2. 源码&#x…

Twitter 宣布抛弃 Mesos,转向 Kubernetes;全球关键5G专利我国占34%;华为面试要改革?...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go2019伯克希尔股东大会&#x…

qt鼠标进入窗体后,窗体自动置顶

提要 鼠标进入窗体后&#xff0c;窗体自动置顶&#xff0c;鼠标移开窗体后&#xff0c;窗体恢复之前的状态。 示例 运行效果如下&#xff1a; 程序刚启动的效果如下&#xff1a; 鼠标放在某一个窗口上的效果如下&#xff1a; 可实现鼠标放在某一个窗口上该窗口置顶&#x…

MyBatis-Plus_入门试炼03

排除非表字段的3种方式 常见编程场景&#xff1a; 实体类中某个变量不对应数据库的表中的任何字段&#xff0c;用于暂时保存临时数据或者通过某种方式计算或组装的数据。 文章目录一、举个栗子&#xff1a;1.1 在User实体类中&#xff0c;添加remark属性1.2 执行插入操作&#…

SaaS路线图 | 时光机

戳蓝字“CSDN云计算”关注我们哦&#xff01;时光机&#xff1a;搭载这部时光机&#xff0c;带您回顾《程序员》大量优秀文章&#xff0c;重温经典技术干货&#xff0c;我们发现硬核技术永不过时&#xff0c;对于get要点、solve难题、提高自我&#xff0c;仍有非凡意义。作者&a…

SpringCloud微服务如何优雅停机及源码分析 | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;Trust_FreeDom转自&#xff1a;码农沉思录本文主要讨论的是微服务注册…

qt自定义行编辑器,用来加载颜色

提要 自定义行编辑器&#xff0c;点击后弹出颜色选择对话框&#xff0c;选择喜欢的颜色&#xff0c;确认后在行编辑器加载选中的颜色。 效果 选中某一个颜色后&#xff0c;行编辑器中加载所选的颜色。 示例 mylineedit.h #ifndef MYLINEEDIT_H #define MYLINEEDIT_H#inclu…

qt使用样式表设置窗口widget为圆角

提要 窗口widget是无法直接通过样式表设置为圆角的&#xff0c;需要在窗口QWidget中拖入控件QFrame&#xff0c;将QFrame设置的和窗口QWidget一样大小&#xff0c;将窗口QWidget中需要的控件拖入到QFrame中。 示例 下面是一个提示工具的窗口。通过它简单的记录一下样式表怎么…

微软 Build 2019:IE 重生,Azure 成主角;华为拟在英剑桥新建半导体研发基地,与ARM做邻居……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go阿联酋联邦政府人工智能部长 …

完美起点更重要:青立方超融合易捷版 助力企业一步云就绪

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;长跑&#xff0c;一项比短跑更具技术含量的运动&#xff0c;如果起跑过猛&#xff0c;…

没有一家公司可以逃避边缘计算 | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a; Ariane转自&#xff1a;边缘计算社区边缘计算正在为数据中心的世界添…