日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qt中使用QCompleter实现查找功能

發(fā)布時間:2024/9/27 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt中使用QCompleter实现查找功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

引言

本文有兩個例子,示例一中通過在combox中輸入文本可以實現(xiàn)自動補全,用戶根據(jù)提示列表,選中某一個信息,作為要搜索的字符串。示例二中用戶輸入要搜索的文本在行編輯器中,當(dāng)輸入的文本在搜索的字符串列表中時,會出現(xiàn)相應(yīng)的提示列表,用戶可選擇提示列表中的字符串。示例二沒有搜索按鈕,只是簡單的根據(jù)輸入的字符串可以檢索到被搜索的列表中的字符串。

示例

項目的結(jié)構(gòu)

示例一和示例二在同一個工程下,沒有只是用兩個函數(shù)區(qū)分開了,一個是下拉列表的搜索功能,一個是行編輯器的搜索功能。下面看具體的實現(xiàn)。
代碼部分:
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.根據(jù)輸入的字符串進行匹配查找。注意:Qt::MatchStartsWith----匹配開頭Qt::MatchEndsWith----匹配結(jié)尾Qt::MatchContains----匹配內(nèi)容 ********************************************/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("技術(shù)的")<<"sdsf";ui->comboBox->addItems(strList);ui->comboBox->setCurrentText("");ui->comboBox->setEditable(true);QCompleter *completer = new QCompleter(strList,this);completer->setFilterMode(Qt::MatchContains);//匹配內(nèi)容ui->comboBox->setCompleter(completer); }void Dialog::initLineEdit() {QStringList strList;strList<<QStringLiteral("開始")<<"ejis"<<QStringLiteral("及深度")<<QStringLiteral("隨時")<<QStringLiteral("技術(shù)的")<<"sdsf";QCompleter *completer = new QCompleter(strList,this);completer->setFilterMode(Qt::MatchContains);//匹配內(nèi)容ui->lineEdit->setCompleter(completer); }void Dialog::on_searchBtn_clicked() {qDebug()<<QStringLiteral("被搜索的字符串是:")<<ui->comboBox->currentText(); }

ui文件中的結(jié)構(gòu)

程序運行的結(jié)果:
以上便是搜索功能,但是值得注意的是:
設(shè)置搜索的類型,
Qt::MatchStartsWith----匹配開頭
Qt::MatchEndsWith----匹配結(jié)尾
Qt::MatchContains----匹配內(nèi)容
在函數(shù)setFilterMode中設(shè)置不同的參數(shù)會有不同的結(jié)果。

總結(jié)

以上是生活随笔為你收集整理的qt中使用QCompleter实现查找功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。