zoukankan      html  css  js  c++  java
  • QCompleter自动补全

     知识永远是那么多,想到什么就总结什么,今天记录一下关于我对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自动补全
    QCompleter自动补全
     
    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自动补全
    QCompleter自动补全
     
    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中是否包含该文本(忽略大小写),若不包含,则进行添加。
    效果如下:
    QCompleter自动补全
     
    常用的方法
    • 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    的模型是大小写不敏感排序的
     
    注:
        技术在于交流、沟通,转载请注明出处并保持作品的完整性。
  • 相关阅读:
    pku 1061 青蛙的约会 扩展欧几里得
    莫比乌斯反演
    51Nod 1240 莫比乌斯函数
    51Nod 1284 2 3 5 7的倍数 容斥原理
    51Nod 1110 距离之和最小 V3 中位数 思维
    51Nod 1108 距离之和最小 V2 1096 距离之和最小 中位数性质
    HDU 2686 Matrix 多线程dp
    51Nod 1084 矩阵取数问题 V2 双线程DP 滚动数组优化
    HDU 1317XYZZY spfa+判断正环+链式前向星(感觉不对,但能A)
    设计模式(4)---单例模式
  • 原文地址:https://www.cnblogs.com/lanye/p/3533786.html
Copyright © 2011-2022 走看看