QT使用QComBox和QLineEdit实现模糊查询功能

 更新时间:2023年11月29日 08:47:35   作者:川谷_  
模糊查询是指根据用户输入的文本,在下拉框的选项中进行模糊匹配,并动态地显示匹配的选项,本文将使用QComBox和QLineEdit实现模糊查询功能,需要的可以参考下

一、概述

在Qt中,可以通过QComboBox和QLineEdit实现模糊查询的功能。模糊查询是指根据用户输入的文本,在下拉框的选项中进行模糊匹配,并动态地显示匹配的选项。

二、基础知识

1、QCompleter

(1)QCompleter 是 Qt 框架中提供的一个用于自动补全和模糊搜索的类。QCompleter 可以与输入框(如 QLineEdit)一起使用,为用户输入的文本提供自动补全的功能。

(2)QCompleter 的主要作用是为一个模型(例如 QStringListModel 或 QStandardItemModel)提供自动补全的功能。它可以根据用户在输入框中输入的文本,动态地过滤模型中的项,并将过滤结果作为候选项显示在输入框下方的弹出窗口中。

2、QStyledItemDelegate

(1)QStyledItemDelegate 是 Qt 框架中提供的一个用于自定义绘制和编辑每个项的委托类。它可以与诸如 QListView、QTableView、QTreeView 等控件一起使用,用于自定义项的外观和编辑行为。

(2)QStyledItemDelegate 的主要作用是控制视图中每个项的绘制和编辑方式,以实现自定义的外观和交互效果。

三、UI界面搭建

四、具体实现

1、MainWindow.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QEvent>
#include <QMainWindow>
 
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
 
    //模糊搜索
    void obscureSearch();
 
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

2、MainWindow.cpp文件

#include "mainwindow.h"
 
#include "ui_mainwindow.h"
 
#include <QCompleter>
#include <QListView>
#include <QStyledItemDelegate>
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    obscureSearch();
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::obscureSearch()
{
    QStringList list;
    list << "RCV_01" << "RCV_02" << "RCV_03" << "RCV_04";
    ui->comboBox->addItems(list);
 
    QString style = QString("QListView {"
                            "font-family: \"Arial\";"
                            "font-size: 13px; "
                            "outline: 0px;}"
                            "QListView::item {"
                            "padding: 3px 0x 3px 5px;"
                            "border-width: 0px;}"
                            "QListView::item:selected {"
                            "background-color: #004EA2;}"
                            "QListView::item:hover {"
                            "background-color: #E5F1FB}");
 
    ui->comboBox->setView(new QListView());
    ui->comboBox->setEditable(true);
    ui->comboBox->setLineEdit(ui->lineEdit);
    ui->comboBox->setMaxVisibleItems(5);
    ui->comboBox->view()->setStyleSheet(style);
 
    QCompleter *pCompleter = new QCompleter(list, this);
    QStyledItemDelegate *d = new QStyledItemDelegate;
    pCompleter->popup()->setItemDelegate(d);
    pCompleter->popup()->setStyleSheet(style);
    pCompleter->setCaseSensitivity(Qt::CaseInsensitive);
 
    ui->comboBox->setCompleter(pCompleter);
    ui->lineEdit->setCompleter(pCompleter);
 
    ui->lineEdit->clear();
}
 

 五、实现效果

到此这篇关于QT使用QComBox和QLineEdit实现模糊查询功能的文章就介绍到这了,更多相关QT模糊查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • VScode中添加头文件和源文件(C/C++)的方法

    VScode中添加头文件和源文件(C/C++)的方法

    使用VSCode编译C/C++时,会存在找不到头文件的情况,下面这篇文章主要给大家介绍了关于VScode中添加头文件和源文件(C/C++)的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • 浅析C++中的多线程编程

    浅析C++中的多线程编程

    这篇文章主要为大家详细介绍了C++中的多线程编程,包括创建线程、同步线程、传递数据给线程以及异常处理等方面,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • 在C语言中输入中文字符串讲解

    在C语言中输入中文字符串讲解

    这篇文章主要介绍了在C语言中输入中文字符串讲解,本文通过概念和案例相结合讲述了如何在C语言中使用中文,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C/C++指针与内存管理图文详解

    C/C++指针与内存管理图文详解

    这篇文章主要为大家详细介绍了C/C++指针与内存管理,使用文图并叙的方式,文中图片介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 基于Opencv实现颜色识别

    基于Opencv实现颜色识别

    这篇文章主要为大家详细介绍了基于Opencv实现颜色识别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 有关C++头文件的包含顺序研究

    有关C++头文件的包含顺序研究

    下面小编就为大家带来一篇有关C++头文件的包含顺序研究。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • DSP中浮点转定点运算--浮点数的存储格式

    DSP中浮点转定点运算--浮点数的存储格式

    本文主要介绍DSP中浮点数的存储格式,很值得学习一下,需要的朋友可以参考一下。
    2016-06-06
  • 详解原码、反码与补码存储与大小

    详解原码、反码与补码存储与大小

    这篇文章主要介绍了详解原码、反码与补码存储与大小的相关资料,需要的朋友可以参考下
    2017-06-06
  • C 语言常用方法技巧

    C 语言常用方法技巧

    本文主要介绍了C语言常用方法技巧。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-03-03
  • VC枚举串口端口应用

    VC枚举串口端口应用

    这篇文章主要介绍了VC枚举串口端口应用,罗列了常见的一些串口端口的应用实例,需要的朋友可以参考下
    2014-10-10

最新评论