知识永远是那么多,想到什么就总结什么,今天记录一下关于我对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. poj 2363 Blocks(暴力)

    题目链接:http://poj.org/problem?id=2363 思路分析:由于数据较小,采用暴力搜索法.假设对于矩形边长 1 <= a <= b <= c <= N; ...

  2. SqlServer和Oracle中一些常用的sql语句10 特殊应用

    --482, ORACLE / SQL SERVER --订购数量超过平均值的书籍 WITH Orders_Book AS ( SELECT Book_Name, SUM(Qty) Book_Qty ...

  3. HDU 5091 线段树扫描线

    给出N个点.和一个w*h的矩形 给出N个点的坐标,求该矩形最多能够覆盖多少个点 对每一个点point(x.y)右边生成相应的点(x+w,y)值为-1: 纵向建立线段树,从左到右扫描线扫一遍.遇到点则用 ...

  4. exp-00091 oracle错误的解决办法

    在进行数据库导入导出使用命令exp.imp经常出现exp-00091 这样的错误的时候,我们需要做的是对于环境变量NLS_LANG设置正确 首先,我们先查看需要导出的数据库的字符编码    selec ...

  5. [Swust OJ 585]--倒金字塔(LIS最长不下降子序列)

    题目链接:http://acm.swust.edu.cn/problem/585/ Time limit(ms): 3000 Memory limit(kb): 65535   SWUST国的一支科学 ...

  6. [转] iOS应用架构谈 网络层设计方案

    原文地址:http://casatwy.com/iosying-yong-jia-gou-tan-wang-luo-ceng-she-ji-fang-an.html iOS应用架构谈 开篇 iOS应用 ...

  7. Chapter 7 代理模式

    代理模式:为其它对象提供一种代理以控制对这个对象的访问. 代码: package xiao; class Girl{ private String name; public void setName( ...

  8. 基于FPGA的DW8051移植(三)

    总结一下问题: 1) http://www.cnblogs.com/sepeng/p/4137405.html  基于FPGA的DW8051移植(一)里面用modelsim观测波形发现程序进入了ida ...

  9. QT实现图片按钮(用qss切割图片,或者放三张图片)

    我在网上找了很久,把他综合了一下 不说了关键代码来了:(这是一张图片切图的效果) void SetButtonStyle(QPushButton *button, QString imgsrc, in ...

  10. android 程序崩溃crash日志的捕捉

    android 程序崩溃crash日志的捕捉 之前在项目开发过程中,一直会遇到程序崩溃了,但是测试組的哥哥们又没及时的导出日志.... 后来在诳群的时候听别人说起,腾讯有那么一个叫bugly的东西 将 ...