知识永远是那么多,想到什么就总结什么,今天记录一下关于我对QComplete的一些小见解。
 
官方文档中叙述如下:
    可以在任何Qt的窗口小部件中使用QCompleter提供自动补全功能,如:QLineEdit和QComboBox。当用户开始输入一个字符,QCompleter根据单词列表提示完成单词。这个单词列表是作为一个QAbstractItemModel被提供的(对于简单的应用,这里所说的列表是静态的,可以传递一个QStringList来构造QCompleter)。
 
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);
}
}
}
    初始word_list中无任何单词,当输入框编辑完成之后,首先判断是否为空,若非空,则检测word_list中是否包含该文本(忽略大小写),若不包含,则进行添加。
效果如下:
 
常用的方法
  • void setMaxVisibleItems(int maxItems)
设置最大显示数目

  • void setCaseSensitivity(Qt::CaseSensitivity caseSensitivity)
设置是否区分大小写
Qt::CaseSensitivity取值如下:
    Qt::CaseInsensitive    0    大小写不敏感
    Qt::CaseSensitive      1    大小写敏感
默认为:Qt::CaseSensitive
  • void setModelSorting(ModelSorting sorting)
设置排序方式
QCompleter::ModelSorting取值如下:
QCompleter::UnsortedModel                   0    该模型是未排序
QCompleter::CaseSensitivelySortedModel      1    该模型是大小写敏感排序
QCompleter::CaseInsensitivelySortedModel    2    的模型是大小写不敏感排序的
 
注:
    技术在于交流、沟通,转载请注明出处并保持作品的完整性。

QCompleter自动补全的更多相关文章

  1. pyqt5的QCompleter自动补全 使用模板

    相关说明 使用QCompleter类,就可以实现自动补全功能,效果图如下: 对应的代码很简单 def init_lineedit(self): # 增加自动补全 self.completer = QC ...

  2. 11、LineEdit与setCompleter自动补全

    #include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug>//引入打印 ...

  3. Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全

    导读 行文本输入框在用于界面的文本输入,在WEB登录表单中应用广泛.一般行文本编辑框可定制性较高,既可以当作密码输入框,又可以作为文本过滤器.QLineEdit本身使用方法也很简单,无需过多的设置就能 ...

  4. QT笔记之QLineEdit自动补全以及控件提升

    转载:http://www.cnblogs.com/csuftzzk/p/qss_lineedit_completer.html?utm_source=tuicool&utm_medium=r ...

  5. 【Qt编程】基于Qt的词典开发系列<十四>自动补全功能

    最近写了一个查单词的类似有道词典的软件,里面就有一个自动补全功能(即当你输入一个字母时,就会出现几个候选项).这个自动补全功能十分常见,百度搜索关键词时就会出现.不过它们这些补全功能都是与你输入的进行 ...

  6. jQuery 邮箱下拉列表自动补全

    综述 我想大家一定见到过,在某个网站填写邮箱的时候,还没有填写完,就会出现一系列下拉列表,帮你自动补全邮箱的功能.现在我们就用jQuery来实现一下. 博主原创代码,如有代码写的不完善的地方还望大家多 ...

  7. eclipse自动补全的设置

    eclipse自动补全的设置   如果你用过Visual Studio的自动补全功能后,再来用eclipse的自动补全功能,相信大家会有些许失望. 但是eclipse其实是非常强大的,eclipse的 ...

  8. vim 添加php自动补全 并格式化代码

    自动补全,修改/etc/vimrc的配置 vim /etc/vimrc 添加: filetype plugin on autocmd FileType php set omnifunc=phpcomp ...

  9. Eclipse自动补全设置

    如果你用过Visual Studio的自动补全功能后,再来用eclipse的自动补全功能,相信大家会有些许失望. 但是eclipse其实是非常强大的,eclipse的自动补全没有VS那么好是因为ecl ...

随机推荐

  1. 简单的iOS抽屉效果

    #define screenW [UIScreen mainScreen].bounds.size.width #import "ViewController.h" @interf ...

  2. UVA 270 Lining Up 共线点 暴力

    题意:给出几个点的位置,问一条直线最多能连过几个点. 只要枚举每两个点组成的直线,然后找直线上的点数,更新最大值即可. 我这样做过于暴力,2.7s让人心惊肉跳...应该还能继续剪枝的,同一直线找过之后 ...

  3. 工作需要稍微研究了一下Hyper-V

    Hyper-V是指微软的虚拟化技术,底层用得Hypervisior好像没有特殊的名字 虚拟化市场占有率前三:VMWare,Hyper-V,Citrix Citrix的XenServer今年彻底开源,原 ...

  4. 数据库 isnull()、nvl()、ifnull() 使用

    SqlServer 插入字段值 为空 设置默认值 isnull(val_1,val_2) 当val_1为 null 的时候 返回 val_2的值 Oracle nvl(val_1,val_2) 当va ...

  5. 【JavaScript】标签样式中多出了element.style

    是因为使用了js增加或修改了样式.

  6. iOS开发App上传的三大步骤

    上传流程 1.itunse connect中->“我的App”中新建创建应用,填写相关的信息 a.项目名称(多创建几个),避免重名 b.想好应用的类型 c.应用截图(5.5,4.7,4,3.5寸 ...

  7. 获取系统的emoji表情定制键盘

    首先 ,想要获取系统的表情,要首先知道表情对应的UTF8 的编码方式,我将其中一部分的图片展示出来 ,然后用UIButton 排列,iOS 7后又增加了300多个表情符号,这些都可以百度查到,现在上代 ...

  8. 安装帝国CMS遇到“修改php.ini,将:short_open_tag 设为 On”的解决方法+“建立目录不成功!请检查目录权限”问题

    想用安装个帝国CMS来做个网站,于是下载了程序,上传到服务器上,但是在输入安装路径的时候却给出了如下图示: 您的PHP配置文件php.ini配置有问题,请按下面操作即可解决: 1.修改php.ini, ...

  9. python中enumerate 函数

    enumerate 函数用于遍历序列中的元素以及它们的下标: >>> for i,j in enumerate(('a','b','c')):  print i,j 0 a 1 b ...

  10. Java--再次理解多态

    Java中多态性(polymorphism)的实现 什么是多态 1. 面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. ...