Qt之模型/视图(委托)】的更多相关文章

[本文转自]http://blog.sina.com.cn/s/blog_a6fb6cc90101hh20.html   作者: 一去丶二三里 关于Qt中MVC的介绍与使用,助手中有一节模型/视图编程(Model/View Programming)讲解的很清晰.     Qt包含一组使用模型/视图结构的类,可以用来管理数据并呈现给用户.这种体系结构引入的分离使开发人员更灵活地定制项目,并且提供了一个标准模型的接口,以允许广泛范围的数据源被使用到到现有的视图中.     模型 - 视图 - 控制器…
Qt之模型/视图(自定义风格) 关于自定义风格是针对视图与委托而言的,使用事件与QSS都可以进行处理,今天关于美化的细节讲解一下. 先看下图: 先撇开界面的美观性(萝卜青菜,各有所爱),就现有的这些风格,使用QSS + Qt二维绘图已经绰绰有余了.当然,如何让界面更美观,这个没有什么捷径,我只能说一句:无他,唯手熟尔!基本功搞扎实了,实现起来就会游刃有余... void DetailProgressBar::paint(QPainter *painter, const QStyleOptionV…
Model-View-Delegate 模型视图委托(MVD)是PyQt中特有的设计模式,类似MVC设计模式,将MVC设计模式中的Controller当做MVD中的Delegate,两者的概念基本相同.不同的是委托不是独立存在,而是包含在视图里面. 模型视图委托设计模式中,模型负责存储和管理数据:视图负责显示数据,其中界面的框架和基础信息是视图负责,具体数据的显示是委托负责:委托不仅仅负责数据的显示,还有一个重要的功能是负责数据的编辑,如在视图中双击就可以编辑数据. 视图是怎么获取模型数据?首先…
模型.视图.委托 模型/视图架构基于MVC设计模式发展而来.MVC中,模型(Model)用来表示数据:视图(View)是界面,用来显示数据:控制(Controller)定义界面对用户输入的反应方式. Qt中视图和控制结合在一起形成新的模型/视图架构.这同样将数据的存储和数据向用户展示进行了分离,但提供了更为简单的框架.数据和界面分离,使得相同的数据可以在不同的视图显示,而且可以扩展新的视图,而不需要改变底层的数据框架.为了灵活处理用户输入,引入了委托,也称为代理,使用它可以定制数据的渲染和编辑方…
概念 不同于模型 - 视图 - 控制器模式,模型/视图设计不包括用于管理与用户交互的一个完全独立的组件.一般情况,视图负责将模型数据呈现给用户以及处理用户输入.为了输入更加具有灵活性,则由委托来执行交互.这些组件提供输入功能,且在一些视图中还负责渲染个别项目.控制委托的标准接口在QAbstractItemDelegate类中定义. 委托能够通过实现的paint()和sizeHint()函数来展示它们的内容.然而,简单基础部件的委托可以继承QItemDelegate而不是QAbstractItem…
简述 在之前的章节中分享过关于QHeaderView表头排序.添加复选框等内容,相信大家模型/视图.自定义风格有了一定的了解,下面我们来分享一个更常用的内容-自定义进度条. 实现方式: 从QAbstractTableModel中设置对应的进度数据,因为我们需要显示进度条,而不是直接显示进度文本,所以原始的数据不需要直接显示在界面上,所以不需要使用Qt::DisplayRole,可以使用Qt::UserRole来代替. 委托QStyledItemDelegate中根据进度索引所对应的数据来获取进度…
上两节简单介绍了Qt中对于模型/视图的编程,大部分助手里说的很清楚了,现在就开始实战部分吧! 在实际应用中,视图展示的数据往往并非一成不变的,那么如何实时更新成了一个很重要的问题!功能:(1)添加委托(进度条)(2)显示文件名称.大小.进度.速度.剩余时间.状态等.(3)可进行添加.更新.删除.清空等操作.(4)实时更新数据先看一个效果图: 委托(进度条):ProgressBarDelegate::ProgressBarDelegate(QObject *parent): QItemDelega…
1. 模型视图实例一, QFileSystemModel  QTreeView ,model/view示例. #include <QApplication> #include <QFileSystemModel> #include <QTreeView> #include <QListView> #include <QStandardItemModel> #include <QDebug> int main(int argc, cha…
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.Qt import * from PyQt4.QtGui import * from PyQt4.QtCore import * import sys,os #视图和委托 """ 视图.在 model/view 架构中,视图是数据从模型到最终用户的途径.数据通过视图向用户进行显示. 此时,这种显示方式不必须同模型的存储结构相…
实习刚才是一段时间,公司这边就要求熟悉这个mvc.一般开始都是用tableview,前面的blog我都是使用listview居多,并且相对delegate这个使用的多余model.接下来说下model. tableview简单说下就是多行多列的表格,使用起来是很简单,添加数据直接insert即可[@官网手册] 但是简单的tableview往往不能满足我们的需求这时候就用到模型.model.一般有标准的model,tableviewmodel,不过大都是继承于qabstractitemmodel.…
简述 衍伸前面的章节,我们对QTableView实现了数据显示.自定义排序.显示复选框.进度条等功能的实现,本节主要针对自定义按钮进行讲解,这节过后,也希望大家对自定义有更深入的了解,在以后的功能开发过程中,相信无论遇到什么样式形式,我们都可以很好地实现. 简述 效果 QStyledItemDelegate 源码 衍伸 效果 QStyledItemDelegate 源码 .h 包含显示按钮需要用到的智能指针,按钮的宽度.高度.按钮之间的间距.鼠标的坐标等. class TableViewDele…
https://blog.csdn.net/liang19890820/article/details/50974059 简述 衍伸前面的章节,我们对QTableView实现了数据显示.自定义排序.显示复选框.进度条等功能的实现,本节主要针对自定义按钮进行讲解,这节过后,也希望大家对自定义有更深入的了解,在以后的功能开发过程中,相信无论遇到什么样式形式,我们都可以很好地实现. | 版权声明:一去.二三里,未经博主允许不得转载. 效果 QStyledItemDelegate 源码 .h 包含显示按…
简述 衍伸前面的章节,我们对QTableView实现了数据显示.自己定义排序.显示复选框.进度条等功能的实现.本节主要针对自己定义button进行解说.这节过后,也希望大家对自己定义有更深入的了解.在以后的功能开发过程中,相信不管遇到什么样式形式,我们都能够非常好地实现. 简述 效果 QStyledItemDelegate 源代码 衍伸 效果 QStyledItemDelegate 源代码 .h 包括显示button须要用到的智能指针,button的宽度.高度.button之间的间距.鼠标的坐标…
http://blog.csdn.net/liang19890820/article/details/50974059#comments…
#include<qapplication.h> #include<qfilesystemmodel.h> #include<qtreeview.h> #include<qtableview> int main(intargc,char**argv) { QApplication app(argc,argv); QFileSystemModel fileSM; fileSM.setRootPath(QDir::homePath()); QTreeView t…
MVC是一种与用户界面相关的设计模式.通过使用此模型,可以有效地分离数据和用户界面.MVC设计模式包含三要素:表示数据的模型(Model).表示用户界面的视图(View)和定义了用户在界面上的操作控制(Controller). Qt的设计了一种与MVC类似的设计模式:使用模型/视图结构完成数据和界面的分离,即InterView框架.Qt的InterView框架把视图和控制部件结合在一起,使得框架更为简洁.Qt引入了代理(delegate)更灵活的处理用户的输入,能够自定义数据条目(item)的显…
MVC视图和控制器对象相结合,其结果是模型/视图结构,仍然分离了数据与呈现给用户的方式,使得它可以在几个不同的视图中显示相同的数据,并实现新类型的视图而无需改变底层的数据结构.为了灵活的处理数据输入,则引入委托的概念.在此框架中引入委托的有点事:允许项目数据显示和自定义编辑. 模型与数据源进行通信,在这个体系结构中为其它组件提供了一个接口.通信的性质依赖于数据源的类型以及模型的实现方式. 视图从模型中得到模型索引,这些都是引用到数据项.通过为模型提供模型索引,视图可以从数据远中检索数据项. 在标…
1.模型/视图类 2.模型 3.视图 4.代理 1 模型/视图类 InterView框架提供了一些可以直接使用的模型类和视图类,如QStandardModel类,QDirModel类,QStringListModel类,以及QColumnView类,QHeaderView类,QListView类,QTableView类和QTreeView类 简单目录浏览器: #include "mainwindow.h" #include <QApplication> #include &…
Model/View(模型/视图)结构是 Qt 中用界面组件显示与编辑数据的一种结构,视图(View)是显示和编辑数据的界面组件,模型(Model)是视图与原始数据之间的接口. GUI 应用程序的一个很重要的功能是由用户在界面上编辑和修改数据,典型的如数据库应用程序.数据库应用程序中,用户在界面上执行各种操作,实际上是修改了界面组件所关联的数据库内的数据. 将界面组件与所编辑的数据分离开来,又通过数据源的方式连接起来,是处理界面与数据的一种较好的方式.Qt 使用 Model/View 结构来处理…
PathView PathView是 QtQuick 中最强大的视图,同时也是最复杂的.PathView允许创建一种更灵活的视图.在这种视图中,数据项并不是方方正正,而是可以沿着任意路径布局.沿着同一布局路径,数据项的属性可以被更详细的设置,例如缩放.透明度等. 使用PathView首先需要定义一个代理和一个路径.除此之外,PathView还可以设置很多其它属性,其中最普遍的是pathItemCount,用于设置可视数据项的数目:preferredHighlightBegin.preferred…
模型-视图-控制器(Model-View-Controller,MVC)是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已广泛应用于用户交互应用程序中.在iOS开发中MVC的机制被使用的淋漓尽致,充分理解iOS的MVC模式,有助于我们程序的组织合理性. 模型对象模型对象封装了应用程序的数据,并定义操控和处理该数据的逻辑和运算.例如,模型对象可能是表示游戏中的角色或地址簿中的联系人.用户在视图层中所进行的创建或修改数据的操作,通过控制器对象传达…
简述 图形视图(Graphics View)提供了一个平台,用于大量自定义2D图元的管理与交互,并提供了一个视图部件(view widget)来显示可以缩放和旋转的图元. 框架包括一个事件传播架构,支持场景(Scene)中的图元(Item)进行精确的双精度交互功能.图元可以处理键盘事件.鼠标按下.移动.释放和双击事件,同时也能跟踪鼠标移动. 图形视图使用一个BSP(Binary Space Partitioning - 二叉空间分割)树,以提供对图形元素的快速查找,正因为如此,它可以使超大的场景…
python设计模式之模型-视图-控制器模式 关注点分离( Separation of Concerns, SoC)原则是软件工程相关的设计原则之一. SoC原则背后的思想是将一个应用切分成不同的部分,每个部分解决一个单独的关注点.分层设计中的层次(数据访问层.业务逻辑层和表示层等)即是关注点的例子.使用SoC原则能简化软件应用的开发和维护. 模型-视图-控制器( Model-View-Controller, MVC)模式是应用到面向对象编程的Soc原则.模式的名称来自用来切分软件应用的三个主要…
以日月地为例的一个模型视图变换.绕了比较多的弯路,下面是几个注意点总结. 注意点: 1.GL函数对模型的操作是基于当前局部坐标系,即模型坐标系而非世界坐标系,二者只在第一次初始化完毕之后才重合: 2.矩阵变换——缩放.平移.旋转是左乘运算,即与代码顺序相反: 3.先平移再旋转类似星体的公转,先旋转再平移类似星体的自转: 4.本例中采取模型坐标系绘制,对不同星体的操作其局部坐标不断变换,连续绘制一系列星体:另一方面若是采取单独星体绘制,即每一个星体的绘制实则是在世界坐标系中绘制,需要用glLoad…
一.需求说明 上一篇文章Qt之QAbstractItemView视图项拖拽(一)讲述了实现QAbstractItemView视图项拖拽的一种方式,是基于QDrag实现的,这个类是qt自己封装好了的,所以可定制性也就没有了那么强,最明显的是,这个类在执行exec方法后,mouse系列的回调接口就被阻塞了,随之而来的问题就是拖拽时item项没有了hover特性,为了解决这个问题,我们就不能使用QDrag类来实现拖拽了,这也是这篇文章我要讲述的内容. 二.效果展示 如图1是demo的效果展示,比较丑,…
一.需求说明 最近在搞视图项的拖拽,也上网查了一些资料,好多的文档都是一样的,只是被不通的网站所收录了(也有可能是被爬过去的,不明所以),不过也有一些文档写的不错,不过就是太简易,都是点睛之笔,总之功能还是勉强可以实现,加之比较零散,刚好我自己也因为这个需求写了一个demo,因此我就把自己写这个demo的过程分析给大家,希望能帮到有这个需求的小伙伴. 二.效果展示 如图1是demo的效果展示,比较丑,如果加上优秀的qss,那必然能让人眼前一亮. 图1 ListWidget拖拽 三.实现思路 继承…
控制台程序. 在模型中表示数据视图的类用来显示草图并处理用户的交互操作,所以这种类把显示方法和草图控制器合并在一起.不专用于某个视图的通用GUI创建和操作在SketcherFrame类中处理. 模型对象包含构成草图的文本和图形.模型类可以称为SketcherModel,表示模型视图的类可以称为SketcherView. 应用程序对象全面负责管理程序涉及的其他对象之间的链接.只要应用程序类能使每个对象可用,可以访问应用程序对象的任何对象就都要与其他对象进行通信.因此,应用程序对象是对象之间的通信通…
模型视图控制器(MVC)一个相当实用且十分流行的设计模式.作为一位称职码农,你不可能没听说过吧. 不幸的是它难以让人理解. 在本文中,我将给出我认为是MVC的最简单的解释,以及为什么你应该使用它. 什么是模型 - 视图 - 控制器(MVC)? 在一个典型应用中,你会发现这三个基本组成部分: 数据(模型) 查看和修改数据的接口(视图) 可以对数据施加的操作(控制器) MVC模式,简言之,就是: 模型代表数据,除此之外别无它用. 模型不依赖于控制器或视图. 视图显示模型数据,发送用户动作(例如按钮点…