# -*- 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模型分:模型,视图,委托,每一个组件由一个抽象类定义,这个抽象类提供了基本的公共接口以及一些默认实现,通过信号槽进行交互

"""

1:来自模型信号通知视图,其底层维护数据发生改变

2:来自视力信号提供有关用户与界面进行交互信息

3:来自委托信号在用户编辑数据项时使用,用于告知模型和视图编辑器状态

所有模型都是QAbstractItemModel子类,这个类定义了供视图和委托访问数据接口,模型并不存储数据本身,

这意味着,可以将数据存储在一个数据结构中,另外的类中,文件中,数据库中,或者其他气相的地方 。

如果你需要为列表或者表格设计另外的模型,直接继承 QAbstractListModel和 QAbstractTableModel 类可能更好一些,因为这两个类已经实现了很多通用函数。

"""

#内置标准模型:

#QStringListModel:存储简单字符串列表

#QStandardItemModel:用于树结构存储,提供了层次数据

#QFileSystemModel:本地系统文件和目录信息

#QSqlQueryModel QSqlTableModel,QSqlRelationalTableModel:数据库存储数据

#当上面几个模型不满足需要时,可以使用QAbstractItemModel、QAbstractListModel 或者 QAbstractTableModel ,来创建自己的模型类

#还预定义一些视图:QListView 用于显示列表,Q TableView 用于显示表格,

# QTreeView 用于显示层次数据。这些类都是 QAbstractItemView 的子类。这意味

# 着,如果你要创建新的视图类,则可以继承 QAbstractItemView。

#QAbstractItemDelegate所有委托的抽象类,默认委托实现QStyledItemDelegate

#QStyledItemDelegate 和 QItemDelegate 都可以作为视图的编辑器,

# 二者的区别在于,QStyledItemDelegate 使用当前样式进行绘制。在实现自定义委托时,推荐使用 QStyledItemDelegate 作为基类,

# 或者结合  Qt style sheets。

如图:

class Painterd(QWidget):

def __init__(self):

super(Painterd,self).__init__()

self.vector()

def vector(self):

label=QLabel(self)

label.setFixedSize(300,200)

listwidget=QListWidget(self)

QListWidgetItem(QIcon(r'i/a.png'),u'图片1',listwidget)#QListWidgetItem 即可以有文本,也可以有图标。

QListWidgetItem(QIcon(r'i/b.png'),u'图片2',listwidget)

QListWidgetItem(QIcon(r'i/ab.png'),u'图片3',listwidget)

listwidget.addItem(QListWidgetItem(QIcon(r'i/a.png'),u'图片1'))

listwidget.addItem(QListWidgetItem(QIcon(r'i/b.png'),u'图片2'))

listwidget.addItem(QListWidgetItem(QIcon(r'i/ab.png'),u'图片3'))

newitem=QListWidgetItem()

newitem.setIcon(QIcon(r'i/a.png'))

newitem.setText(u'图片')

listwidget.insertItem(3,newitem)

layout=QHBoxLayout(self)

layout.addWidget(label)

layout.addWidget(listwidget)

self.setLayout(layout)

#更改为图标显示,只要添加一行语句:

#listwidget.setViewMode(QListView.IconMode)

self.connect(listwidget,SIGNAL('currentTextChanged(QString)'),label,SLOT('setText(QString)'))

def main():

app = QtGui.QApplication(sys.argv)

ex =Painterd()

ex.show()

sys.exit(app.exec_())

if __name__ == '__main__':

main()

如图:

#更改为图标显示,只要添加一行语句:

#listwidget.setViewMode(QListView.IconMode)

如图:

qt model/view 架构基础介绍之QListWidget的更多相关文章

  1. qt model/view 架构基础介绍之QTableWidget

    # -*- coding: utf-8 -*- # python:2.x #说明:QTreeWidget用于展示树型结构,也就是层次结构同前面说的 QListWidget 类似,这个类需要同另外一个辅 ...

  2. qt model/view 架构基础介绍之QTreeWidget

    # -*- coding: utf-8 -*- # python:2.x #说明:QTreeWidget用于展示树型结构,也就是层次结构同前面说的 QListWidget 类似,这个类需要同另外一个辅 ...

  3. qt model/view 架构自定义模型之QFileSystemModel

    # -*- coding: utf-8 -*- # python:2.x #QFileSystemModel """ Qt  内置了两种模型:QStandardItemM ...

  4. qt model/view 架构自定义模型之QStringListModel

    # -*- coding: utf-8 -*- # python:2.x #QStringListModel #QStringListModel 是最简单的模型类,具备向视图提供字符串数据的能力. # ...

  5. 第15.26节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QListWidget详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 列表部件(List Widget)对应类QListWidget,是从QListView派生 ...

  6. 第15.22节 PyQt(Python+Qt)入门学习:Model/View架构详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.简介 在PyQt和Qt中,Model/View架构是图形界面开发时用于管理数据和界面展现方式的关 ...

  7. 第15.18节 PyQt(Python+Qt)入门学习:Model/View架构中视图Item Views父类详解

    老猿Python博文目录 老猿Python博客地址 一.概述 在PyQt图形界面中,支持采用Model/View架构实现数据和界面逻辑分离,其中Model用于处理数据存储,View用于界面数据展现,当 ...

  8. Qt 学习之路 2(41):model/view 架构

    Qt 学习之路 2(41):model/view 架构 豆子 2013年1月23日 Qt 学习之路 2 50条评论 有时,我们的系统需要显示大量数据,比如从数据库中读取数据,以自己的方式显示在自己的应 ...

  9. 第15.23节 PyQt(Python+Qt)入门学习:Model/View架构中QListView视图配套Model的开发使用

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 QListView理论上可以和所有QAbstractItemModel派生的类如QStri ...

随机推荐

  1. Java中普通代码块,构造代码块,静态代码块的代码演示样例及区分

    //运行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 当中静态代码块仅仅运行一次.构造代码块在每次创建对象是都会运行. 1 普通代码块 <span ...

  2. 2014牡丹江——Domination

    题目链接 题意: 给一个n*m的矩阵,每天随机的在未放棋子的格子上放一个棋子.求每行至少有一个棋子,每列至少有一个棋子的天数的期望  (1 <= N, M <= 50). 分析: 比較明显 ...

  3. ViewPager实现页卡的3种方法(谷歌组件)

    ----方法一:---- 效果图: 须要的组件: ViewPager+PagerTabStrip 布局文件代码: <!--xmlns:android_custom="http://sc ...

  4. OLE-DB 操作excel 基本

    1 方法用例   *&---------------------------------------------------------------------* *& 本程序总结了常 ...

  5. mysql三种binlog日志的理解

    最近,一直在纠结要不要改数据库binlog的日志格式,原先用的是row格式,导致数据库binlog日志较大,磁盘空间本来也不是很大,所以就想看看能不能改变binlog日志.在该binlog日志之前,先 ...

  6. JS文件中加载jquery.js

    原文链接:http://blog.csdn.net/whatday/article/details/39553451 最近有一个需求: 1.在一个html中只能引入一个JS文件 不能有JS代码和其他J ...

  7. 第一次写博客,关于前端开发deMVC在js中的应用

    对前端MVC MVC分别是model.view.controller的缩写,模型.视图.控制器.这些更加偏向于后台,在以前MVC是只属于后台的.当然随着技术的进步,前端的大牛们将后台的一些东西应用于前 ...

  8. OpenGL ES 2.0 变换

    基本变换都是通过将表示点坐标的向量与特定的变换矩阵相乘完成的. 进行基于矩阵的变换时,三位空间中点的位置需要表示成齐次坐标形式. 齐次坐标形式:在X.Y.Z3个坐标值后面增加第四个量W,未变换时W值一 ...

  9. Js与flash交互:在html页面中用js与MyReport插件交互

    Html页面与flash的加载 如下图,flash是html页面的一个插件节点. js与flash进行交互,首先要处理好html页面和swf的加载问题. Swf调用外部js方法,要确保js方法已存在, ...

  10. rman全库恢复到不同主机,不同实例名,不同目录下

    一.配置目标主机的ip.hostname及与源端主机的连通性 1.配置目标主机IP 使用图形界面配置IP: administration----network---修改IP(指定静态IP) deact ...