qt中使用QCompleter实现查找功能
生活随笔
收集整理的這篇文章主要介紹了
qt中使用QCompleter实现查找功能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
引言
本文有兩個例子,示例一中通過在combox中輸入文本可以實現自動補全,用戶根據提示列表,選中某一個信息,作為要搜索的字符串。示例二中用戶輸入要搜索的文本在行編輯器中,當輸入的文本在搜索的字符串列表中時,會出現相應的提示列表,用戶可選擇提示列表中的字符串。示例二沒有搜索按鈕,只是簡單的根據輸入的字符串可以檢索到被搜索的列表中的字符串。
示例
項目的結構
示例一和示例二在同一個工程下,沒有只是用兩個函數區分開了,一個是下拉列表的搜索功能,一個是行編輯器的搜索功能。下面看具體的實現。
代碼部分:
main.cpp
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_Hdialog.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实现查找功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ideal2018提示内存不足_基于ID
- 下一篇: 记录一种多个按钮中每次只能选中一个的实现