QTableView类用于以表格形式输出信息,可通过自定义的数据模型来显示数据,通过setModel来绑定数据源;

继承结构如下:

QTableView有以下几种模式:

例如:

 1 #QTableView组件的使用
 2 from PyQt5.QtWidgets import QTableView, QHeaderView, QFormLayout,   QVBoxLayout,QWidget,QApplication ,QHBoxLayout, QPushButton,QMainWindow,QGridLayout,QLabel
 3 import sys
 4 from PyQt5.QtCore import  *
 5 from PyQt5.QtGui import  QStandardItemModel,QStandardItem
 6
 7 class WindowClass(QWidget):
 8     #如果集成QMainWindow 则self.setLayout(self.layout) 替换成
 9     """
10         widget=QWidget()
11         widget.setLayout(self.layout)
12         self.setCentralWidget(widget)
13     """
14     #即可, 注意集成QWidget和集成QMainWindow时候区别
15
16     def __init__(self,parent=None):
17         super(WindowClass, self).__init__(parent)
18         self.layout=QVBoxLayout()
19         self.model=QStandardItemModel(4,4)#存储任意结构数据
20         self.model.setHorizontalHeaderLabels(['序号','姓名','年龄','地址'])
21         for row in range(4):
22             for column in range(4):
23                 i=QStandardItem("row %s,column %s"%(row,column))
24                 self.model.setItem(row,column,i)
25         self.tableView=QTableView()
26         self.tableView.setModel(self.model)
27         self.layout.addWidget(self.tableView)
28
29         #继承QMainWidow使用下面三行代码
30         # widget=QWidget()
31         # widget.setLayout(self.layout)
32         # self.setCentralWidget(widget)
33
34         #继承QWidget则使用下面这样代码
35         self.setLayout(self.layout)
36
37         #设置表格充满这个布局QHeaderView
38         #self.tableView.horizontalHeader().setStretchLastSection(True)#最后一列决定充满剩下的界面
39         self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)#所有列自动拉伸,充满界面
40
41
42 if __name__=="__main__":
43     app=QApplication(sys.argv)
44     win=WindowClass()
45     win.show()
46     sys.exit(app.exec_())

对上面实例进行扩充,添加行,删除行操作:

 1 #QTableView组件的使用
 2 from PyQt5.QtWidgets import  QAbstractItemView,QAction, QMenuBar,QTableView, QHeaderView, QFormLayout,      QVBoxLayout,QWidget,QApplication ,QHBoxLayout, QPushButton,QMainWindow,QGridLayout,QLabel
 3 import sys
 4 from PyQt5.QtCore import  *
 5 from PyQt5.QtGui import  QStandardItemModel,QStandardItem
 6
 7 class WindowClass(QMainWindow):
 8     #如果集成QMainWindow 则self.setLayout(self.layout) 替换成
 9     """
10         widget=QWidget()
11         widget.setLayout(self.layout)
12         self.setCentralWidget(widget)
13     """
14     #即可, 注意集成QWidget和集成QMainWindow时候区别
15
16     def __init__(self,parent=None):
17         super(WindowClass, self).__init__(parent)
18         self.layout=QVBoxLayout()
19         self.model=QStandardItemModel(4,4)#存储任意结构数据
20         self.model.setHorizontalHeaderLabels(['序号','姓名','年龄','地址'])
21         for row in range(4):
22             for column in range(4):
23                 i=QStandardItem("  row %s,column %s"%(row,column))
24                 self.model.setItem(row,column,i)
25         self.tableView=QTableView()
26         self.tableView.setModel(self.model)
27         self.layout.addWidget(self.tableView)
28
29         #继承QMainWidow使用下面三行代码
30         widget=QWidget()
31         widget.setLayout(self.layout)
32         self.setCentralWidget(widget)
33
34         #继承QWidget则使用下面这样代码
35         #self.setLayout(self.layout)
36
37         #设置表格充满这个布局QHeaderView
38         #self.tableView.horizontalHeader().setStretchLastSection(True)#最后一列决定充满剩下的界面
39         self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)#所有列自动拉伸,充满界面
40
41         #添加menu菜单栏,注意:QMainWindow 才可以有菜单栏,QWidget没有,因此上面只能采用继承QMainWIndow
42         tool = self.addToolBar("File") #这里尝试使用QmenuBar,则此时会卡死,无法完成下面appedRow操作(猜测:可能是因为本身不允许menuBar完成这种操作)
43         self.action= QAction("添加", self)
44         self.action2=QAction("删除",self)
45         tool.addAction(self.action)
46         tool.addAction(self.action2)
47         tool.actionTriggered[QAction].connect(self.processtrigger)
48
49         self.tableView.setSelectionMode(QAbstractItemView.SingleSelection)#设置只能选中一行
50         self.tableView.setEditTriggers(QTableView.NoEditTriggers)#不可编辑
51         self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows);#设置只有行选中
52
53     def processtrigger(self,action):
54         if action.text()=="添加":
55             self.model.appendRow([
56                 QStandardItem('row %s,column %s' % (11, 11)),
57                 QStandardItem('row %s,column %s' % (11, 11)),
58                 QStandardItem('row %s,column %s' % (11, 11)),
59                 QStandardItem('row %s,column %s' % (11, 11)),
60             ])
61         if action.text()=="删除":
62
63             r= self.tableView.selectionModel().selectedRows()#获取被选中行
64             print(r)#被选中行的列表,每个元素是ModelIndex对象
65             #indexs = self.tableView.selectionModel().selection().indexes()#返回结果是QModelIndex类对象,里面有row和column方法获取行列索引
66             #print(indexs[0].row())
67             if r:
68                 #下面删除时,选中多行中的最后一行,会被删掉;不选中,则默认第一行删掉
69                 index=self.tableView.currentIndex()
70                 print(index.row())
71                 self.model.removeRow(index.row())
72
73
74 if __name__=="__main__":
75     app=QApplication(sys.argv)
76     win=WindowClass()
77     win.show()
78     sys.exit(app.exec_())

转载于:https://www.cnblogs.com/ygzhaof/p/10076308.html

PyQt5-高级控件使用(QTableView)相关推荐

  1. 三、PyQt5高级控件的使用

    (四)PyQt5高级控件的使用 PyQt5中包含了很多用于简化窗口设计的可视化控件,除了常用控件外,还有一些关于进度.展示数据等的高级控件. 本章重点讲解PyQt5程序开发中用到的一些高级控件,主要包 ...

  2. RecyclerView高级控件-附实例【android专题】

    RecyclerView高级控件 RecyclerView是Android 及其重要的一个高级UI控件,使用频率及其的高,APP的90%以上的页面都会使用的到.由于其出色的性能和插拔式的架构设计,被全 ...

  3. Android高级控件(二)——SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现...

    Android高级控件(二)--SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现 写这个的原因呢,也是因为项目中用到了gif动画,虽然网上有很多的架包可以实现,不过我们还 ...

  4. 《移动项目实践》实验报告——Android高级控件

    实验目的 1.熟悉App开发常用的一些高级控件及相关工具,主要包括日期时间控件的用法.列表类视图及其适配器的用法.翻页类视图及其适配器的用法.碎片及其适配器的用法等: 2.熟悉四大组件之一广播Broa ...

  5. Android从入门到进阶之高级控件

    高级控件 1.自动完成文本控件 在搜索引擎(百度.搜狗)输入几个文字,会出来一些提示.可以减少用户的输入,提高程序的效率.刚才看到的自动提示,ajax技术. 1.1AotoCompleteTextVi ...

  6. WinForm高级控件实例--职员信息登记

    WinForm高级控件实例--职员信息登记 转载于:https://www.cnblogs.com/macT/p/9288092.html

  7. Android高级控件----AdapterView与Adapter详解

    在J2EE中提供过一种非常好的框架--MVC框架,实现原理:数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上.在Android中有这样一种高级控件 ...

  8. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第八章:高级控件

    本章介绍了App开发常用的一些高级控件用法,主要包括:如何使用下拉框及其适配器.如何使用列表 类视图及其适配器.如何使用翻页类视图及其适配器.如何使用碎片及其适配器等.然后结合本章所学 的知识,演示了 ...

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

    Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adap ...

  10. Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷

    Android高级控件(四)--VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷 是不是感觉QQ空间什么的每次新版本更新那炫炫的引导页就特别的激动,哈哈,其实他实现起来真的很简单很 ...

最新文章

  1. SHA1加密(简单)
  2. Android fragment 页面,[38→100]一个常规的Android页面模型:NetFragment
  3. H618B刷了tomato0530版本 呵呵,测试一下
  4. 信息学奥赛一本通(1214:八皇后)
  5. 学成在线案例——黑马程序员pink老师\思路讲解\完整源代码
  6. matlab与r语言函数对照表,R语言与matlab循环时间对比
  7. mysql—触发器trigger
  8. Install/RemoveoftheServiceDenied!
  9. 斐讯k2p openwrt固件改双WAN口
  10. 【百度云提取】:JDK1.8API、Jdk1.8安装包、jQueryAPI文档、JavaScriptAPI文档、W3School相关API文档
  11. 2019主流的前端框架
  12. Ubuntu18.04 安装 网易云音乐 解决 打不开的问题
  13. 女孩起名字:诗经中惊艳的女孩名字
  14. C语言编程奖学金评定,C语言计算奖学金总额
  15. zookeeper-选举流程
  16. 运用C语言文件编写自动评分系统,C语言程序题自动评分系统的研究与实现
  17. erp开发 php,php适合做erp吗?
  18. 让WINDOWS XP自动登陆
  19. python入门系列:包和模块
  20. win11关闭开盖开机 / Windows11关闭掀盖自动开机

热门文章

  1. Query UI DateRangePicker自定义面板个数
  2. Android之自定义checkbox样式
  3. 软件测试方法的分类细谈
  4. 键盘出现与消失的监听方法
  5. Android开发学习笔记-md5加密算法
  6. 基于应用层自身反远程线程注入的研究
  7. [转]Eclipse+pydev 常用快捷键
  8. 再来关注一哥们的博客 水木 风雪
  9. 【原创翻译】生动详细解释javascript的冒泡和捕获,包懂包会
  10. Glide-Android下高效加载多媒体文件