当前位置:   article > 正文

自定义QCompleter,直接绑定QLineEdit,可默认选中,自动根据内容行数自动缩小高度_qcompleter头文件

qcompleter头文件

自定义QCompleter,直接绑定QLineEdit,可默认选中,自动根据内容缩小窗口,能设置最高显示行数,自动停靠。里面的duplicatelist是本人的特殊用途,正常情况下是不需要,也就构造函数最后一个参数其实没什么用处。代码是在VS2019+Qt6.5.0下写的

 刚刚学习Qt三个月,不太熟练,代码有很多地方要优化,请大家多多指教

不说废话了,直接上代码

下面这个是头文件

#pragma once

#include <QListView>
#include <QStringListModel>
#include <QLineEdit>
#include <QCompleter>
#include <QEvent>
#include <QKeyEvent>

#include <QApplication>
class QMyCompleterListView : public QListView {
    Q_OBJECT

public:
    QMyCompleterListView(QLineEdit* ledit, QStringList startstrlist = { }, QStringList duplicate = { });
    ~QMyCompleterListView();


    //设置要过滤的字符串
    void setCompleterStringList(QStringList w) { words = w; };

    // 设置要从第几个字符开始显示弹窗,默认是第一位开始显示弹窗
    void setStartbit(unsigned int val = 1) { startbit = val ? val : 1; };
    //返回默认起始位,要从第几个字符开始显示弹窗
    int getStartbit() const { return startbit; };


    //设置是否默认选中第一项
    //************************************
    // 方法:    QMyCompleterListView::setStartHighlight
    // 权限:    public 
    // 返回类型:   void
    // 参数:     bool hightlight
    // 修饰:     
    // 功能:设置是否默认选中第一项
    //************************************
    void setStartHighlight(bool hightlight = true);

    //返回是否默认选中第一项
    //************************************
    // 方法:    QMyCompleterListView::getStartHighlight
    // 权限:    public 
    // 返回类型:   bool
    // 修饰:     const
    // 功能:返回是否默认选中第一项
    //************************************
    bool getStartHighlight() const { return ishightlight; };

    //设置模式,model = PopupCompletion,只显示相匹配的文本,UnfilteredPopupCompletion,匹配显示在前,不匹配移动最后
    //************************************
    // 方法:    QMyCompleterListView::setCompleterMode
    // 权限:    public 
    // 返回类型:   void
    // 参数:     QCompleter::CompletionMode model
    // 修饰:     
    // 功能:设置显示数据的模式,值是PopupCompletion(0)或UnfilteredPopupCompletion(1)
    // PopupCompletion:为只显示匹配字符串;UnfilteredPopupCompletion,显示所有,匹配的在前面。
    //************************************
    void setCompleterMode(QCompleter::CompletionMode  model = QCompleter::PopupCompletion);

    //************************************
    // 方法:    QMyCompleterListView::getCompleterMode
    // 权限:    public 
    // 返回类型:   QCompleter
    // 修饰:     const
    // 功能:返回显示数据的模式,值是PopupCompletion(0)或UnfilteredPopupCompletion(1)
    // PopupCompletion:为只显示匹配字符串;UnfilteredPopupCompletion,显示所有,匹配的在前面。
    //************************************
    QCompleter::CompletionMode getCompleterMode() const { return completermode; };


    //************************************
    // 方法:    QMyCompleterListView::setCaseSensitive
    // 权限:    public 
    // 返回类型:   void
    // 参数:     Qt::CaseSensitivity sensitive
    // 修饰:     
    // 功能: 设置是否区分大小写,值Qt::CaseSensitiv

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/806004
推荐阅读
相关标签
  

闽ICP备14008679号