随笔分类 - qt mvc
摘要:上一章我们已经了解到有关 list、table 和 tree 三个最常用的视图类的便捷类的使用。前面也提到过,由于这些类仅仅是提供方便,功能、实现自然不如真正的 model/view 强大。从本章起,我们将了解最基本的 model/view 模型的使用。既然是 model/view,我们也会分为两部...
阅读全文
摘要:model/view 模型将数据与视图分割开来,也就是说,我们可以为不同的视图,QListView、QTableView和QTreeView提供一个数据模型,这样我们可以从不同角度来展示数据的方方面面。但是,面对变化万千的需求,Qt 预定义的几个模型是远远不能满足需要的。因此,我们还必须自定义模型。...
阅读全文
摘要:从本章开始,我们将逐步了解有关自定义模型的相关内容。尽管前面我们曾经介绍过 Qt 提供的几个内置模型:QStringListModel和QFileSystemModel,但对于千变万化的需求而言,这些显然是远远不够的。于是,Qt 也允许我们对模型进行自定义。在正式开始介绍自定义模形之前,我们先来了解...
阅读全文
摘要:前面我们用了两个章节介绍了 Qt 提供的两种操作数据库的方法。显然,使用QSqlQuery的方式更灵活,功能更强大,而使用QSqlTableModel则更简单,更方便与 model/view 结合使用(数据库应用很大一部分就是以表格形式显示出来,这正是 model/view 的强项)。本章我们简单介...
阅读全文
摘要:上一章我们详细了解了QStringListModel。本章我们将再来介绍另外一个内置模型:QFileSystemModel。看起来,QFileSystemModel比QStringListModel要复杂得多;事实也是如此。但是,虽然功能强大,QFileSystemModel的使用还是简单的。让我们...
阅读全文
摘要:选择是视图中常用的一个操作。在列表、树或者表格中,通过鼠标点击可以选中某一项,被选中项会变成高亮或者反色。在 Qt 中,选择也是使用了一种模型。在 model/view 架构中,这种选择模型提供了一种更通用的对选择操作的描述。对于一般应用而言,Qt 内置的选择模型已经足够,但是,Qt 还是允许你创建...
阅读全文
摘要:QSqlQueryModel类为SQL的结果集提供了一个只读的数据模型,下面我们先利用这个类进行一个最简单的操作。我们新建Qt4 Gui Application工程,我这里工程名为queryModel ,然后选中QtSql模块,Base class选QWidget。工程建好后,添加C++ Heade...
阅读全文
摘要:QTableWidget继承自QTableView。QSqlTableModel能与QTableView绑定,但不能于QTableWidget绑定。Cpp代码QSqlTableModel*model=newQSqlTableModel;model->setTable("employee");mode...
阅读全文
摘要:目录:(一) Qt Model/View 的简单说明、预定义模型(二)使用预定义模型QstringListModel例子(三)使用预定义模型QDirModel的例子(四)Qt实现自定义模型基于QAbstractTableModel(五)Qt实现自定义模型基于QAbstractItemModel(六)...
阅读全文
摘要:Qt 中视图与模型绑定时,模型必须使用new来创建。否则刚开始初始化的时候,视图无数据显示,或者后期视图不能随着模型的改变而改变。具体原因:我猜测是局部变量生命周期的问题。new 的变量在堆中,除非手动释放,否则一直存在。如果不new一个Model,把Model变量放在类成员变量中,视图就可以正常显...
阅读全文
摘要:(一) Qt Model/View 的简单说明、预定义模型(二)使用预定义模型QstringListModel例子(三)使用预定义模型QDirModel的例子(四)Qt实现自定义模型基于QAbstractTableModel(五)Qt实现自定义模型基于QAbstractItemModel(六) Qt...
阅读全文
摘要:发现问题的过程1、一个普通的继承QAbstractTableModel的类Cpp代码classCurrencyModel:publicQAbstractTableModel{public:CurrencyModel(QObject*parent=0);voidsetCurrencyMap(const...
阅读全文
摘要:第一种不能之前显示,必须双击/选中后才能显示,不适用。 第二种比较简单,通常用这种方法。 第三种只适合静态显示静态数据用 第四种比较适合扩展,它除了可以嵌入复选框,还可以通过paint()绘制其它控件,图片等自定义风格。第一种方法是:编辑委托法这种方法直接利用委托中重载cre...
阅读全文
摘要:自定义委托,继承于,QStyledItemDelegate类,重载Paint()函数,1、实现在QTableView中绘制 格式字符串2、实现在QTableView中绘制进度条3、实现在QTableView中绘制QCheckBox4、实现在QTableView中绘制星星5、实现在QTableView...
阅读全文
摘要:共有 main.cpp, Widget.h, Widget.cpp, Widget.ui, MyModel.h, MyModel.cpp 六个文件。可从此下载整个工程文件:/Files/biao/ModelDemo.zip关键在于Model中的数据是动态加载的,而不是一次性全加载到Model中。/*...
阅读全文
摘要:Qt之模型/视图(自定义风格) 关于自定义风格是针对视图与委托而言的,使用事件与QSS都可以进行处理,今天关于美化的细节讲解一下。 先看下图: 先撇开界面的美观性(萝卜青菜,各有所爱),就现有的这些风格,使用QSS + Qt二维绘图已经绰绰有余了。当然,如何让界面更美观,这个没...
阅读全文
摘要:上两节简单介绍了Qt中对于模型/视图的编程,大部分助手里说的很清楚了,现在就开始实战部分吧! 在实际应用中,视图展示的数据往往并非一成不变的,那么如何实时更新成了一个很重要的问题!功能:(1)添加委托(进度条)(2)显示文件名称、大小、进度、速度、剩余时间、状态等。(3)可进行添加...
阅读全文
摘要:Qt包含一组使用模型/视图结构的类,可以用来管理数据并呈现给用户。这种体系结构引入的分离使开发人员更灵活地定制项目,并且提供了一个标准模型的接口,以允许广泛范围的数据源被使用到到现有的视图中。 模型 - 视图 - 控制器(MVC)是一种设计模式,由三类对象组成:模型:应用程序对象。视图...
阅读全文
摘要:前面两节讲的model是一维的,这次开始二维的也就是我们常说的Table,相对与list,我们多了一个列的概念。下面讲解一个例子。我先说明一下我们这个例子,在程序目录下,我们有一个文本文件,其中存放的学生信息。数据存放的格式学号 姓名 性别xxx xxx ...
阅读全文
摘要:继续上次的例子,对于list才说只有行,讨论列是没有意义的。 bool insertRows(int row, int count, const QModelIndex &parent); bool removeRows(int row, int count, const QModel...
阅读全文