PyQt5-高级控件使用(QListView)

QListView用于展示数据,子类是QListWidget。QlistView基于模型Mode,需要程序创建Model然后保存数据;

QListWidget是一个升级版的QlistView,它建立了一个数据存储模型(QListWidgetItem),直接调用addItems()函数即可添加条目(Item)

常用方法如下:

常用信号:

例如:

 1 #QListView使用
 2 from PyQt5.QtWidgets import   QMessageBox,QListView, QStatusBar,  QMenuBar,QMenu,QAction,QLineEdit,QStyle,QFormLayout,   QVBoxLayout,QWidget,QApplication ,QHBoxLayout, QPushButton,QMainWindow,QGridLayout,QLabel
 3 from PyQt5.QtGui import QIcon,QPixmap,QStandardItem,QStandardItemModel
 4 from PyQt5.QtCore import QStringListModel,QAbstractListModel,QModelIndex,QSize
 5 import sys
 6
 7 class WindowClass(QMainWindow):
 8     def __init__(self,parent=None):
 9         super(WindowClass, self).__init__(parent)
10         self.layout=QVBoxLayout()
11         self.resize(200,300)
12         listModel=QStringListModel()
13         listView=QListView()
14         items=["张三","李四","小明","JONES"]
15
16         listModel.setStringList(items)
17         listView.setModel(listModel)
18
19         listView.clicked.connect(self.checkItem)
20
21         self.layout.addWidget(listView)
22         widget = QWidget()
23         widget.setLayout(self.layout)
24         self.setCentralWidget(widget)
25
26     def  checkItem(self,index):
27          QMessageBox.information(self,"ListView","选择项是:%d"%(index.row()))
28
29 if __name__=="__main__":
30     app=QApplication(sys.argv)
31     win=WindowClass()
32     win.show()
33     sys.exit(app.exec_())

以上是一个QStringListView效果;

下面是一个QListView或者QIconView实现的,带有图标的效果,如下程序:

 1 #QListView使用
 2 from PyQt5.QtWidgets import   QMessageBox,QListView, QStatusBar,  QMenuBar,QMenu,QAction,QLineEdit,QStyle,QFormLayout,   QVBoxLayout,QWidget,QApplication ,QHBoxLayout, QPushButton,QMainWindow,QGridLayout,QLabel
 3 from PyQt5.QtGui import QIcon,QPixmap,QStandardItem,QStandardItemModel
 4 from PyQt5.QtCore import QStringListModel,QAbstractListModel,QModelIndex,QSize
 5 import sys
 6
 7 class WindowClass(QMainWindow):
 8     def __init__(self,parent=None):
 9         super(WindowClass, self).__init__(parent)
10         self.layout=QVBoxLayout()
11         self.resize(200,300)
12         listView=QListView()
13         listView.setViewMode(QListView.ListMode)#或者使用QListView.IconMode  QListView.ListMode
14         #listView.setMovement(QListView.Static)
15         listView.setIconSize(QSize(20,20))#图标的大小(原始图标大小如果100,100,此时设置草果原始大小则失效)
16         listView.setGridSize(QSize(60,40))#每个选项所在网格大小(每个选项外层grid宽高)
17         listView.setMaximumHeight(200)#listView整体最大高度
18         #listView.setMinimumSize(QSize(200,200))#listView最小面积(一般如果设置最大高和宽属性后就不设置这个属性了)
19         #listView.setMaximumSize(QSize(500,500))#listVIew最大面积(一般如果设置最大高和宽属性后就不设置这个属性了)
20         listView.setMinimumHeight(120)#listView最小高度
21
22         listView.setResizeMode(QListView.Adjust)
23         #listView.setMovement(QListView.Static)#设置图标可不可以移动,默认是可移动的,但可以改成静态的:
24
25         self.item_1=QStandardItem(QIcon("./image/save.ico"), "普通员工A");
26         self.item_2 = QStandardItem(QIcon("./image/save.ico"), "普通员工B");
27
28         model=QStandardItemModel()
29         model.appendRow(self.item_1)
30         model.appendRow(self.item_2)
31         listView.setModel(model)
32
33         listView.clicked.connect(self.checkItem)
34
35         self.layout.addWidget(listView)
36         widget = QWidget()
37         widget.setLayout(self.layout)
38         self.setCentralWidget(widget)
39
40
41     def  checkItem(self,index):
42          QMessageBox.information(self,"ListView","选择项是:%d"%(index.row()))
43
44 if __name__=="__main__":
45     app=QApplication(sys.argv)
46     win=WindowClass()
47     win.show()
48     sys.exit(app.exec_())

原文地址:https://www.cnblogs.com/ygzhaof/p/10077192.html

时间: 12-06

PyQt5-高级控件使用(QListView)的相关文章

Android高级控件(五)——如何打造一个企业级应用对话列表,以QQ,微信为例

Android高级控件(五)--如何打造一个企业级应用对话列表,以QQ,微信为例 看标题这么高大上,实际上,还是运用我么拿到listview去扩展,我们讲什么呢,就是研究一下QQ,微信的这种对话列表,我们先看一个传统的ListView是怎么样的,我们做一个通讯录吧,通讯录的组成就是一个头像,一个名字,一个电话号码,一个点击拨打的按钮,既然这样,那我们的item就出来了 call_list_item.xml <?xml version="1.0" encoding="ut

Windows应用程序高级控件之ListView控件

ListView控件---列表视图控件 用途:显示带图标的项列表,其中可以显示大图标.小图标和数据 ListView控件的常用属性: View属性:设置项在控件中的显示方式,View属性的值有以下几种 Details       每个项显示在不同的行上 LargeIcon     每个项都显示为一个最大的图标,下面有标签,是默认的视图模式 List          每个项显示为一个小图标,右边带标签,各项排列在列中,没有列表头 SmallIcon     每个项显示为小图标,右边带标签 Tit

Windows应用程序高级控件之TreeView

TreeView控件--树控件 为用户显示节点层次结构,每个节点又可以包含子节点. 添加和删除树节点 添加--TreeView的Nodes属性的Add方法:public virtual int Add(TreeNode node) 删除--TreeView的Nodes属性的Remove方法:public void Remove(TreeNode node) 添加-实例代码: private void Form1_Load(object sender, EventArgs e) { //为树控件建

OLE--SWT高级控件

OLE和ActiveX控件的支持    OLE(Object Link Embeded)是指在程序之间链接和嵌入对象数据.通过OLE技术可以在一个应用程序中执行其他的应用程序.    而ActiveX控件是OLE的延伸,一般用于网络.    SWT中涉及OLE和ActiveX的类都在org.eclipse.swt.ole.win32包中,使用最常见的是OleFrame类.OleClientSite类和OleControlSite类. 1. OLE控件的面板类(OleFrame)    该类继承自

Android高级控件——ViewPager、GridView、popwindow、SlideMenu(中)

Android高级控件--ViewPager.GridView.popwindow.SlideMenu(中) android:screenOrientation="locked"锁屏 android:screenOrientation="landscape"横屏锁定   <!--android:theme="@android:style/Theme.NoTitleBar.Fullscreen"  Activity 直接extends Act

Android高级控件(一)——ListView绑定CheckBox实现全选,添加和删除等功能

Android高级控件(一)--ListView绑定CheckBox实现全选,添加和删除等功能 这个控件还是挺复杂的.也是项目中应该算是比較经常使用的了,所以写了一个小Demo来讲讲,主要是自己定义adapter的使用方法.加了非常多的推断等等等等-.我们先来看看实现的效果吧! 好的,我们新建一个项目LvCheckBox 我们事先先把这两个布局写好吧,一个是主布局,另一个listview的item.xml.相信不用多说 activity_main.xml <LinearLayout xmlns:

Android高级控件——GridView ScrollView ViewPager (上)

Android高级控件--GridView ScrollView ViewPager (上) GridView 网格视图,网格视图组件,九宫图显示数据表格(一种控件) ScrollView滚动视图 是一个单一容器,只能包含一个组件. ViewPager左右滑动 SlideMenu侧边栏 PullToRefreshListView下拉刷新 ListView新闻 原声列表视图 <?xml version="1.0" encoding="utf-8"?> &l

集合视图控制器(CollectionViewController) 、 标签控制器(TabBarController) 、 高级控件介绍

  1 创建集合视图,设置相关属性以满足要求 1.1 问题 集合视图控制器UIConllectionViewController是一个展示大量数据的控制器,系统默认管理着一个集合视图UICollectionView,功能几乎和UITableViewController差不多,能够以多行多列的形式展示数据. 集合视图UICollectionView继承至UIScrollView,也同tableView一样有两个协议,分别是UICollectionViewDataSource数据源协议和UIColl

高级控件 下(三)

上下文菜单@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.menu);TextView tv=(TextView) findViewById(R.id.tv00);//tv注册上下文菜单registerForContextMenu(tv);}@Overridepublic void onCreateCont

iOS高级控件之tableViewController-城市列表

今天我们要做的是一个城市信息的展示,先给大家看看是怎样的一个效果,我想应该是绝对的实用^_^ 好了,接下来我就简要的给大家讲讲步骤,因为技术博客写的真心不多,也不知道该怎样讲才能把每一个人都看懂,但是宝宝我本着写有态度的博客,尽量的将细节描述详尽,不对的地方,望指正. 哈哈 虽然感觉并没有多少人看,我想我应该是自己的忠实的粉丝^_^好了不说废话了,进入正题 首先,建立一个新的工程,然后将storyboard中的viewController删除,同时将左侧viewController.h和.m一并