知识永远是那么多,想到什么就总结什么,今天记录一下关于我对QComplete的一些小见解。
官方文档中叙述如下:
QCompleter补全文件路径
QLineEdit *search_line_edit = new QLineEdit();
QCompleter *completer = new QCompleter();
QDirModel *dir_model = new QDirModel();
completer->setModel(dir_model);
search_line_edit->setCompleter(completer);
效果如下:
QCompleter补全单词
QStringList word_list;
word_list<<"Java"<<"C++"<<"C#"<<"PHP"<<"Perl"<<"Python"<<"Delphi"<<"Ruby";
QLineEdit *search_line_edit = new QLineEdit();
QCompleter *completer = new QCompleter(word_list, this);
completer->setCaseSensitivity(Qt::CaseInsensitive);
search_line_edit->setCompleter(completer);
效果如下:
QCompleter添加新单词
search_line_edit = new QLineEdit();
completer = new QCompleter();
string_list_model = new QStringListModel();
completer->setCaseSensitivity(Qt::CaseInsensitive);
completer->setModel(string_list_model);
search_line_edit->setCompleter(completer);
connect(search_line_edit, &QLineEdit::editingFinished, this, &MainWidget::editComplete);
槽函数如下:
void MainWidget::editComplete()
{
QString text = search_line_edit->text();
if(QString::compare(text, QString("")) != 0)
{
bool is_contains = word_list.contains(text, Qt::CaseInsensitive);
if(!is_contains)
{
word_list<<text;
string_list_model->setStringList(word_list);
}
}
}
效果如下:
常用的方法
- void
setMaxVisibleItems(int maxItems)
设置最大显示数目
Qt::CaseInsensitive
0
大小写不敏感
Qt::CaseSensitive
1
大小写敏感
- void
setCaseSensitivity(Qt::CaseSensitivity caseSensitivity)
设置是否区分大小写
Qt::CaseSensitivity取值如下:
默认为:Qt::CaseSensitive
- void
setModelSorting(ModelSorting sorting)
设置
排序方式
QCompleter::ModelSorting取值如下:
QCompleter::ModelSorting取值如下:
QCompleter::UnsortedModel
0
该模型是未排序
QCompleter::CaseSensitivelySortedMod
el
1
该模型是大小写敏感排序
QCompleter::CaseInsensitivelySortedM
odel
2
的模型是大小写不敏感排序的