Qt学习记录,QSortFilterProxyModel

QSortFilterProxyModel主要可实现按表的标头实现自动排序,及根据过滤条件过滤,具体的demo可以查看QT自带的Item views系列。

我的例子还没加上过滤。

add_da(QAbstractItemModel* model,int &ID,const QString& Description,const QString& Type){
    model->insertRow(0);
    model->setData(model->index(0,0),ID);
    model->setData(model->index(0,1),Description);
    model->setData(model->index(0,2),Type);
}

QAbstractItemModel* create_da_model(QObject *parent,QList<Da_result> da_result){
    QStandardItemModel *model = new QStandardItemModel(0,3,parent);
    model->setHeaderData(0,Qt::Horizontal,QObject::tr("ID");
    model->setHeaderData(1,Qt::Horizontal,QObject::tr("Description");
    model->setHeaderData(2,Qt::Horizontal,QObject::tr("Type");
    foreach(Da_result da_list,da_result{
        add_da(model,da_list.ID,da_list.Description,da_list.Da_Type);
    }

    return model;
}

QSortFileterProxyModel* proxyModel = new QSortFilterProxyModel;
proxyModel->setDynamicSortFilter(true);

ui.DaTreeView->setRootIsDecorated(false);
ui.DaTreeView->setAlternatingRowColors(true);
ui.DaTreeView->setModel(proxyModel);
ui.DaTreeView->setSortingEnabled(true);

proxyModel->setSourceModel( create_da_model(this,da_result) );

总结下:一般我们都是直接使用view->setModel来将数据显示在view上,这就是QT的model/view模式。

这里也不例外:ui.DaTreeView->setModel(proxyModel);

而这个proxyModel的内容是什么呢?

proxyModel->setSourceModel( create_da_model(this,da_result) );

这里给我的model填充内容,因为我需要从数据库提取我想要的内容,我把这些内容放在了一个QList里,而不是我们通常使用QSqlQueryModel这样去获取全部的内容后直接作为model传入我的proxyModel,这里我就需要创建我自己的model了,那么跳到函数create_da_model();

该函数要做的就是先填标头,然后遍历将我QList的内容填入。这里就不做多解释了,不明白?那么留言吧。

时间: 2024-10-01 05:05:55

Qt学习记录,QSortFilterProxyModel的相关文章

qt学习记录

main.cpp #include "display_da.h" #include <QtGui/QApplication> int main(int argc, char *argv[]) { // QApplication::addLibraryPath("./plugins"); QApplication a(argc, argv); display_da w; w.show(); return a.exec(); } sql_interface.

Qt学习记录--Qt::CaseSensitive

Qt::CaseSensitivity 为枚举类型, 可取值Qt::CaseSensitive 和 Qt::CaseInsensitive, 表示匹配的灵敏度. 比较字符串的时候 Qt::CaseSensitive区分大小写 Qt::CaseInSensitive不区分大小写 例如:void findPrevious(const QString &str,Qt::CaseSensitivity cs); 这个函数想要带一个const QString &str字符串参数,而后面跟的Qt::C

qt学习记录-----4.qt定时器

两种开启定时器方式 一.开启多个定时器 添加头文件 设置三个定时器,并设置定时时间 定时器溢出,调用定时器事件处理函数 二.只需少量定时器,采用信号和槽的方式 实现槽函数

【qt学习005】搞不明白的布局

记录一下自己在布局这一章遇见的各种狗屎问题. 问题主要出现在布局最后一节:综合布局实例,类似于一个qq管理器的界面(见下图1).看见这个时,打算动手实现一下,于是开始写代码,写着写着发现不知道怎么写了,遇见一些无法解决的问题(问题中描述的布局类之间的关系见下图2): 1. 最底层应该使用哪一类? 2. 怎么将QListWidget加入到最底层? 3. 怎么往QStackWidget加入三个页面,每个页面代表不同的信息? 4. 怎么将QHBoxLayout中的CLOSE按钮连接到退出函数,要完整地

【qt学习】开篇

重新开始学习qt,在年前已经看过一些知识点,但毫无进展,始终停留在知识点的阶段,或许有qt考试的话,我可以考得不错.然而学习qt,更多的是为了实战应用,并将其变成自己的兵器. 开始学习之前,先说说早前的一个困惑--为什么学习qt?最初学习qt,是因为身边朋友的强烈推荐,他说通过学习图形界面编程可以提高c++编程能力,而图形界面编程无非两种,一种MFC,另一种就qt了,MFC极其变态,想要简单快速,就学qt吧,于是我就开始看qt了.没过多久我有些动摇了,随着互联网时代的来临,编程方式正在慢慢改变,

Qt学习(7)

Qt学习(7)——Hello Designer 上一节的 Hello Widget 例子中,主界面窗口的尺寸和标签控件显示的矩形区域等,都是用 C++ 代码编写的.窗口和控件的尺寸都是预估的,控件如果多起来,那就不好估计每个控件合适的位置和大小了. 用 C++ 代码编写图形界面的问题就是不直观,因此 Qt 项目开发了专门的可视化图形界面编辑器—— Qt Designer, 即 Qt 设计师.通过设计师就可以很方便地创建图形界面文件 *.ui ,然后将 ui 文件应用到源代码里面,做到所见即所得(

QT学习教程

原地址:http://www.devbean.NET/2012/08/qt-study-road-2-catelog/ 网上看到的不错的教程 本教程以qt5为主,部分地方会涉及qt4.据说非常适合qt5入门学习,最近正在参考,转载希望更多人看到,也为自己以后找到本资料提供方便. Qt 学习之路 2>目录 序 Qt 前言 Hello, world! 信号槽 自定义信号槽 Qt 模块简介 MainWindow 简介 添加动作 资源文件 对象模型 布局管理器 菜单栏.工具栏和状态栏 对话框简介 对话框

qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果

应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏,主机是mini2440,分辨率是800*480,程序写比較粗糙,但对刚開始学习的人还是有一点启示,大家一起进步. qt中提供了QGphicsView,QGraphicsScene,QGraphicsItem,QGraphicsPixmapItem是QGraphicsItem的子类 分辨创建它们的实

Python学习记录-2016-12-17

今日学习记录 模块: import os#导入os模块 import sys#导入sys模块 os.system("df -h")#执行df -h命令 cmd_res = os.popen("df -h").read()#将命令的返回结果赋值给cmd_res,如果不加入.read()会显示命令的返回加过在内存的位置 print(sys.path)#显示系统变量路径,一般个人模块位于site-packages下,系统模块位于lib下 print(sys.argu[2]