Qt之Model-View架构 Qt之Model-View架构 简述 效果图 代码 结尾 简述 为什么会用这个模式,这里我就不解释了,可以看下 豆子哥的见解 .这里我只是如何去使用的.供大家共同探讨学习,主要是参考了Qt的Demo. 效果图 代码 //主代码界面QMvcTest.cpp void QMvcTest::initControl() { QCustomItemModel* customModel = new QCustomItemModel(QJsonArray(), ui.treeV…
Qt 学习之路 2(41):model/view 架构 豆子 2013年1月23日 Qt 学习之路 2 50条评论 有时,我们的系统需要显示大量数据,比如从数据库中读取数据,以自己的方式显示在自己的应用程序的界面中.早期的 Qt 要实现这个功能,需要定义一个组件,在这个组件中保存一个数据对象,比如一个列表.我们对这个列表进行查找.插入等的操作,或者把修改的地方写回,然后刷新组件进行显示.这个思路很简单,也很清晰,但是对于大型程序,这种设计就显得苍白无力.比如,在一个大型系统中,你的数据可能很大,…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 QListView理论上可以和所有QAbstractItemModel派生的类如QStringListModel.QDirModel.QFileSystemModel.QStandardItemModel等对接,但QListView实际上能展示的数据仅一列,对于复杂的树形层次使用Model使用QListView来展现意义不大.本节通过几个简单代码案例来阐述QListView/Model开…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.简介 在PyQt和Qt中,Model/View架构是图形界面开发时用于管理数据和界面展现方式的关系.由该体系架构引入的功能分离使得开发人员能够更灵活地定制展现数据项的呈现方式,并提供标准模型接口支持广泛的数据源与预定义好的项视图(item views)一起使用. 二.Model/View架构概述 2.1.引言 模型-视图-控制器(Model-View-Controller,简称MVC)是一种源…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 Model/View架构中的Model模型Model与数据源通信,为体系结构中的其他组件提供数据接口.与数据源通信的方式取决于数据源的类型(如文件.数据库.消息等)以及模型的实现方式.由于模型中的数据都是以项(item)为单位进行管理,所以Model模型又称为项模型(item models ). 所有项模型(item models )类都是从基类QAbstractItemModel 类及其子类派生…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 模型-视图-控制器(Model-View-Controller,简称MVC)是一种源于Smalltalk在构建用户界面时 广泛使用的设计模式.在<Design Patterns>一书中,Gamma等人这样描述到:"MVC由三种对象组成.模型Model是应用程序对象,视图View是其屏幕表示,控制器Controller定义用户界面对用户输入的反应方式.在MVC之前,用户界面设计…
老猿Python博文目录 老猿Python博客地址 一.概述 在PyQt图形界面中,支持采用Model/View架构实现数据和界面逻辑分离,其中Model用于处理数据存储,View用于界面数据展现,当Model中的数据变化后对应界面视图自动更新,反之当View中数据进行修改之后,也支持通知Model进行数据调整. 为了快速支持Model/View架构,PyQt提供了一系列类来支持,在Qt Designer中Item Views部件栏的视图部件都是用于Model/View架构的View部件,涉及相…
老猿Python博文目录 老猿Python博客地址 一.概述 QStandardItemModel是QAbstractItemModel的派生类,用于在Model/View架构中存储自定义数据的通用模型,可以用于在任何支持QAbstractItemModel接口的view(例如QListView.QTableView和QTreeView,以及自定义视图)中作为数据存储. QStandardItemModel可以用作标准Qt数据类型的数据存储Model.QStandardItemModel提供了一…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 树部件(Tree Widget)是Qt Designer中 Item Widgets(Item-Based)部件中提供的一个Model/View便利部件,对应类为QTreeWidget类. QTreeWidget类从QTreeView派生(继承关系请参考<PyQt学习随笔:Qt中Model/View相关的主要类及继承关系>),是一个Model/View便利类,提供一个树状管理数据的界面…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.简介 在PyQt和Qt中,Model/View架构是图形界面开发时用于管理数据和界面展现方式的关系.由该体系架构引入的功能分离使得开发人员能够更灵活地定制展现数据项的呈现方式,并提供标准模型接口支持广泛的数据源与预定义好的项视图(item views)一起使用. 二.Model/View架构概述 2.1.引言 模型-视图-控制器(Model-View-Controller,简称MVC)是一种源…
老猿Python博文目录 老猿Python博客地址 引言:本章早就写好了,其简版<第15.18节 PyQt(Python+Qt)入门学习:Model/View架构中视图Item Views父类详解>也发布好多天了,而迟迟未发布的原因是有个属性dragDropOverwriteMode验证中发现与官网介绍不一致,不过今天这个问题已经找到原因,因此更新发布. 一.概述 在PyQt图形界面中,支持采用Model/View架构实现数据和界面逻辑分离,其中Model用于处理数据存储,View用于界面数据…
老猿Python博文目录 老猿Python博客地址 在<PyQt学习随笔:Qt中Model/View相关的主要类及继承关系>介绍了Model/View架构的主要类,在实际使用时,view相关类的对象在Qt Designer中可以直接构建,但Model相关类的对象必须代码实现,那么怎么去构造Model相关的对象与View匹配呢? 其实Model构建的方法与View类别相关,但View类别并不是唯一确认Model构建方法的要素,还要看View中数据的内容.一般来说: 如果是多行单列的字符数据,可以…
最近在看Qt的Model/View Framework,在网上搜了搜,好像中文的除了几篇翻译没有什么有价值的文章.E文的除了Qt的官方介绍,其它文章也很少.看到一个老外在blog中写道Model/View是他认为Qt中最不好的一部分了.真的是这样吗?为了回馈开源社区,我写了这篇blog,写的是我认为比较有价值的东东.题目起得是解析,但也没有特别细节的介绍,点到为止,有兴趣的Tx可以继续讨论.我所看的资料有<C++ GUI Programming with Qt 4, Second Edition…
不同于MVC模式,Model/View设计并不包含用于处理与用户交互的完全独立的部件, 没有将用户交互部分完全分离.一般地,视图负责把模型数据显示给用户,以及处理用户的输入.但是,对于某些特殊要求(比如要求必须输入数字),则交予Delegate(委托)完成. Delegate(委托)组件提供输入功能,同时也能渲染某些特殊数据项.Delegate(委托)就是供视图实现某种高级的编辑功能,在视图中提供输入功能,同时负责传递视图中的单个项.可以说Delegate(委托)是PyQt Model/View…
Qt中Model/View中的Model Index是一个类,该类用于定位Model/View中数据模型中的数据. Model Index是从QAbstractItemModel派生的子类,用于在项视图( item views).委托(delegates)和选择模型( selection models)使用来定位Model中的数据项(delegates相当于MVC中的C,用于在视图中处理用户的输入,输入可以通过调用model的setData函数保存到真正的数据中). 模型索引引用模型中的数据项,…
QT与JavaScript互调 - 虹的日志 - 网易博客 QT与JavaScript互调   2012-05-29 21:43:14|  分类: 技术 |  标签:qt  javascript  webkit  qwebkit   |举报 |字号大中小 订阅     一.QT中文支持   //编码设置   QTextCodec *codec = QTextCodec::codecForName("GBK");     QTextCodec::setCodecForCStrings(c…
基于libevent, libuv和android Looper不断演进socket编程 - 走向架构师之路 - 博客频道 - CSDN.NET 基于libevent, libuv和android Looper不断演进socket编程 分类: 移动云 2013-05-24 17:33 2422人阅读 评论(2) 收藏 举报 目录(?)[+] 同步阻塞读写 libevent libuv Android Looper 最近在做websocket  porting的工作中,需要实现最底层socket读…
 QT 相关资源(书籍.论坛.博客等...)整理... 中文名:<提问的智慧> 英文名:How To Ask Questions The Smart Way 中文链接1:http://www.beiww.com/doc/oss/smart-questions.html中文链接2:http://community.csdn.net/IndexPage/SmartQuestion.aspx 虽然这篇文章与QT没有太大关联,不过我还是放在前排,希望各位提问前读一下这篇文章,非常经典,这绝不是浪费时间…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 在Model/View体系架构中,有两种方法可以进行排序:选择哪种方法取决于底层模型. 如果模型是可排序的,即模型类实现了QAbstractItemModel.sort()函数,如QTableView和QTreeView都提供一个API,允许以编程方式对模型数据进行排序.此外,还可以通过将QHeaderView.sortIndicatorChanged()信号连接到QTableView…
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.QtGui import  * from PyQt4.Qt import * from PyQt4 import QtGui, QtCore from PyQt4.QtCore import * import sys # MVC是Model-View-Controller的简写,即模型-视图-控制器 #model/view框架将传统的mv模型分…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 表格部件为应用程序提供标准的表格显示工具,在表格内可以管理基于行和列的数据项,表格中的最大数据项数为总行数和总列数的乘积,另外在表格中可以设置水平和垂直标题. 表格部件对应类为QTableWidget ,QTableWidget 表格部件中的项类型为QTableWidgetItem类.QTableWidget 从QTableView派生的子类,内置默认模型,如果表格展现的应用需要使用自己…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 列表部件(List Widget)对应类QListWidget,是从QListView派生的类,用于显示一些数据的列表,不支持多层级数据的显示.QListWidget显示的数据项都通过QListWidgetItem构建. QListWidget是一个便利类,它提供了一个类似于QListView提供的列表视图,具有一个用于添加和删除项的接口.QListWidget使用一个内部模型来管理列表…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 在Designer的部件栏Item Views中提供了PyQt和Qt已经实现好的table View(表视图)部件,table View对应的类为QTableView,QTableView类提供表视图的默认Model/View实现.这儿的所说的表视图老猿理解为类似通过行和列定位数据的表格形式的数据展现方式. QTableView是PyQt和Qt提供的一种表视图的实现,用于显示存储在Mod…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.QStringListModel介绍 QStringListModel是Qt提供的一个已经实现QAbstractItemModel相关接口的Model,适合于展示一系列字符串的简单视图如QListView对象和QComboBox对象. QStringListModel提供了所有可编辑模型的标准函数,将字符串列表中的数据存储为一个一列多行的模型. 使用index(int row, int col…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在QListView列表视图中的项不但可以展示文字,也可以展示图标和复选框,同时可以指定项是否可以拖拽.选择.编辑.有两种方法支持在项中展示图标,一种是使用QStandardItem创建项时通过QIcon传递图标文件参数,一种是使用QStandardItem()创建空项后通过setData指定图标文件为Qt.DecorationRole角色的数据. 1.使用QStandardItem(QIcon…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.PyQt中的标准模型 PyQt和Qt提供了两个标准模型QStandardItemModel和QFileSystemModel.QStandardItemModel是一个多用途模型,可用于表示列表list.表table和树tree类型视图所需的各种不同数据结构,模型可以保存数据项.QFileSystemModel是一个维护文件目录内容信息的模型,它本身不包含任何数据项,而只是表示本地文件系统上的…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在使用QTableView来显示如下数据时: 在model中插入数据是使用如下类似代码: for col in range(0, linelen): data = line[col] item = QStandardItem(data) self.excelModel.setItem(lineNO, col , item) 发现第一列之后的数据不能正常显示,如图: 跟踪未发现程序有错误. 最后确认…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在进行QTableView展示数据时,使用了QStandardItemModel的model,并在将包含多行多列的数据(如学生成绩表)的标题使用QStandardItemModel的方法setHeaderData设置标题后运行,却发现显示的标题和内容都不正常. 如需要显示的数据为: 但显示的数据为: 这其实是因为没有显示设置model数据的列数导致setHeaderData失败导致,只需要在调用Q…
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 1.案例说明 在应用中展示指定目录的图标文件的文件名和图标,界面就是一个简单的窗口上面放置一名为listView的列表视图,在视图中展示这些文件名和图标. 2.在界面派生类中定义模型并将模型和视图关联 class mainWindow( QtWidgets.QWidget,ui_listView.Ui_mainWin): def __init__(self): super(mainWindow,…
Qt中数据编程主要分为以下两点:1.利用qt提供类 访问数据库或者成为简单的数据库编程2.数据库编程中引入model/view编程模型 基于model/view数据库编程: qt提供model类: QSqlTableModel类 QSqlQueryModel类Qt提供view类: QTableView 需要掌握两个知识: (1)model/view编程步骤 (2)qt数据库编程步骤 案例:通过界面view控件实现对数据库中的一张表(姓名.年龄.成绩)中记录进行操作 (1)放置一个view控件 Q…