QT 读取 bin 文件
# flechazo 的小知乎,欢迎大家造访啦😘
https://www.zhihu.com/people/jiu_sheng
在 QT 中,可以使用 setCompleter () 函数设置自动完成功能,该函数可以将一个 QCompleter 对象与一个输入框(如 QLineEdit 或 QPlainTextEdit)关联起来,从而实现自动完成的功能。
QCompleter 对象是用来提供自动完成功能的,它可以通过 QStringList 或模型类作为数据源。下面分别介绍这两种方式的使用方法:
# 使用 QStringList 作为数据源
效果展示:
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 会根据输入的内容自动匹配并显示可能的完成选项供用户选择。
# 使用模型类作为数据源
效果展示:
除了 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 设置为输入框的自动完成器,就可以实现自动完成功能了。
谢谢耐心看完的大家啦!
给个小心心吧❤