QT 读取 bin 文件

# flechazo 的小知乎,欢迎大家造访啦😘

在 QT 中,可以使用 setCompleter () 函数设置自动完成功能,该函数可以将一个 QCompleter 对象与一个输入框(如 QLineEdit 或 QPlainTextEdit)关联起来,从而实现自动完成的功能。

QCompleter 对象是用来提供自动完成功能的,它可以通过 QStringList 或模型类作为数据源。下面分别介绍这两种方式的使用方法:

# 使用 QStringList 作为数据源

效果展示:

image-20240122180359905

QStringList 是 QT 中常用的字符串列表类型,它可以作为 QCompleter 的数据源,提供自动完成功能。以下是一个示例代码,展示了如何使用 QStringList 设置自动完成功能:

#include <QApplication>
#include <QLineEdit>
#include <QCompleter>

//为了能使用ui控件,记得将这个函数声明在Widget类里哦!
void Widget::vflechazoAutoCompleter(void)
{
    // 创建一个字符串列表作为自动完成的数据源
    QStringList wordList;
    wordList << "apple🍎" << "banana🍌" << "cherry🧀" << "grape🍇" << "orange🍊" << "flechazo🌸" << "欢迎大家造访flechazo的小窝🍬";
    wordList << " flechazo🍭";
    wordList << " 喜欢大家😘";
    wordList << " 欢迎大家来捧场哦🎊";
    wordList << " 我的小窝🎃flechazo.mba";
    wordList << " flechazo一枚可可爱爱的程序员🌸";

    // 创建了一个 QCompleter 对象 completer1,并将其与 wordList 数据源关联起来。在构造 QCompleter 对象时,将 wordList 作为参数传入。同时,使用 setCaseSensitivity() 函数设置 QCompleter 的大小写不敏感性,即 Qt::CaseInsensitive,这样在自动匹配时不区分大小写。
    QCompleter *completer1 = new QCompleter(wordList, this);
    completer1->setCaseSensitivity(Qt::CaseInsensitive);

    // 使用 setCompleter() 函数将 completer1 设置为 ui->lineEdit 的自动完成器,从而实现在该输入框中输入部分字符时的自动匹配功能。
    ui->lineEdit->setCompleter(completer1);

}

在上面的示例中,我们创建了一个字符串列表 wordList 作为自动完成的数据源。然后,我们创建了一个 QCompleter 对象并将其与数据源关联起来。最后,我们创建了一个 QLineEdit 对象,并使用 setCompleter () 函数将自动完成器设置为 lineEdit 的自动完成器。

当用户在 lineEdit 输入框中输入字符时,QCompleter 会根据输入的内容自动匹配并显示可能的完成选项供用户选择。

# 使用模型类作为数据源

效果展示:

image-20240122180513930

除了 QStringList,还可以使用 QT 内置的模型类作为 QCompleter 的数据源。例如,可以使用 QDirModel 访问文件系统中的文件和目录列表,作为自动完成的数据源。以下是一个示例代码,展示了如何使用 QDirModel 设置自动完成功能:

#include <QApplication>
#include <QLineEdit>
#include <QCompleter>
#include <QDirModel>

void Widget::vflechazoAutoCompleterDir(void)
{
    // 创建一个 QCompleter 对象,并将其与 QDirModel 模型关联起来
    QCompleter *completerDir = new QCompleter(this);
    completerDir->setModel(new QDirModel(completerDir));

    // 创建一个 QLineEdit 对象,并设置自动完成器
    ui->lineEdit_2->setCompleter(completerDir);
}

在上面的示例中,我们创建了一个 QCompleter 对象,并将其与 QDirModel 模型关联起来。然后,我们创建了一个 QLineEdit 对象,并使用 setCompleter () 函数将自动完成器设置为 lineEdit 的自动完成器。

当用户在 lineEdit 输入框中输入部分文件或目录名时,QCompleter 会根据输入的内容自动匹配并显示可能的选项供用户选择。需要注意的是,QDirModel 可以访问整个文件系统,因此在使用时要小心,确保只提供需要的目录和文件列表,避免意外泄露敏感信息。

除了数据源的设置,还可以通过 setCaseSensitivity () 函数设置 QCompleter 的大小写敏感性。默认情况下,QCompleter 是大小写敏感的,但可以通过设置 Qt::CaseInsensitive 选项来忽略大小写。例如:

Codecompleter->setCaseSensitivity(Qt::CaseInsensitive);

最后,使用 setCompleter () 函数将 QCompleter 设置为输入框的自动完成器,就可以实现自动完成功能了。

谢谢耐心看完的大家啦!

给个小心心吧❤

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

flechazo 微信支付

微信支付

flechazo 支付宝

支付宝

flechazo 贝宝

贝宝