您当前的位置: 首页 >  搜索

lw只吃亿点.

暂无认证

  • 7浏览

    0关注

    47博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Qt之QSortFilterProxyModel的简单使用(QTableView搜索功能,含源码+注释)

lw只吃亿点. 发布时间:2022-06-04 22:28:05 ,浏览量:7

文章目录
  • 一、QSortFilterProxyModel示例图
  • 二、QSortFilterProxyModel使用提要
  • 三、源码
    • CMainWindow.h
    • CMainWindow.cpp
  • 四、拓展
    • 1.获取过滤器当前选中的文本
    • 2.修改当前选中item的文本
  • 总结
  • 相关文章

一、QSortFilterProxyModel示例图

下图为QSortFilterProxyModel简单使用示例图,在设置过滤器模型到表对象上后,设置筛选文本/正则表达式就会自动筛选,源码在本文第三节,源码含详细注释。 在这里插入图片描述 提示:不会使用Qt设计师设计界面的小伙伴点击这里

二、QSortFilterProxyModel使用提要
  1. 使用过滤器需要指定一个数据模型(QStandardItemModel)作为数据源,并且该数据模型无需设置到表对象上;
  2. 过滤器指定好数据源后设置到表对象上即可正常使用
  3. 过滤器不指定过滤列时,默认过滤列为0列
三、源码 CMainWindow.h
#ifndef CMAINWINDOW_H
#define CMAINWINDOW_H

#include 
#include        //数据模型类
#include     //过滤器模型

namespace Ui {
class CMainWindow;
}

class CMainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit CMainWindow(QWidget *parent = 0);
    ~CMainWindow();

public slots:

private slots:
    /**
     * @brief on_findEdit_textChanged 查找编辑栏文本更新槽函数
     * @param arg1 更新文本
     */
    void on_findEdit_textChanged(const QString &arg1);

    /**
     * @brief on_filterColumnEdit_textChanged 指定搜索列编辑栏
     * @param arg1 指定列
     */
    void on_filterColumnEdit_textChanged(const QString &arg1);

private:
    Ui::CMainWindow     *ui;

    QStandardItemModel  *m_pModel;      //数据模型对象指针

    QSortFilterProxyModel *m_pFilterModel;  //过滤器模型对象指针

};

#endif // CMAINWINDOW_H
CMainWindow.cpp
#include "CMainWindow.h"
#include "ui_CMainWindow.h"

CMainWindow::CMainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::CMainWindow)
{
    ui->setupUi(this);
    //设置窗口标题
    this->setWindowTitle("QSortFilterProxyModel的简单使用");
    //设置文本框占位符文本
    ui->findEdit->setPlaceholderText("请输入查找内容(自动查找)");
    ui->filterColumnEdit->setPlaceholderText("请输入查询列(默认为第0列)");
    //设置查询列正则表达式(只能输入数字)
    ui->filterColumnEdit->setValidator(new QRegExpValidator(QRegExp("[0-9]+$")));

//===============数据模型(QStandardItemModel)===============
    //建立数据模型对象空间并指定父对象
    m_pModel = new QStandardItemModel(ui->tableView);
    //添加列标题
    m_pModel->setHorizontalHeaderLabels(QStringList() item(dataModelxIndex->row(), dataModelxIndex->column());
}
总结

过滤器是个很好用的工具,但是在我查找相应资料时,听说对源数据模型做增加/删除操作会出现问题,这方便大家须得注意咯,总之,不做违规操作,一般不会出现问题! 那么今天就到这里吧,大家晚安啊!

相关文章

Qt代理的实现(按钮篇,含源码+注释) Qt代理的实现(常规控件篇,含源码+注释) Qt之QTableView的简单使用(含源码+注释) Qt之QTableView设置多列表头复选框(自定义QHeaderView)、单元格复选框(含源码+注释) Qt之QTreeView的简单使用(含源码+注释) Qt之QListView的简单使用(含源码+注释)

友情提示——哪里看不懂可私哦,让我们一起互相进步吧 (创作不易,请留下一个免费的赞叭 谢谢 ^o^/)

注:文章为作者编程过程中所遇到的问题和总结,内容仅供参考,若有错误欢迎指出。 注:如有侵权,请联系作者删除

关注
打赏
1654352885
查看更多评论
立即登录/注册

微信扫码登录

0.0714s