网站首页 > 技术文章 正文
表格控件,还有一个QTableWidget,它继承自QTableView。QTableWidget和QTableView的主要区别是QTableView可以使用自定义的数据模型来显示内容,而QTableWidget只能使用标准的数据模型,并且其单元格数据是通过QTableWidgetItem对象来实现的。通常情况下,使用QTableWidget就能够满足我们的大多数要求。它常用的方法,除了用QTableView的方法外,还可用下表所示的方法:
方法 | 描述 |
setRowCount(int rows) | 设置表格控件的行数; |
setColumnCount(int column) | 设置表格控件的列数; |
setHorizontalHeaderLabels([str] labels) | 用于一次性顺序设置水平表头多个节显示的文本,该方法无返回值。设置了标签的节自动会创建该节对应的项; |
setVerticalHeaderLabels([str] labels) | 用于一次性顺序设置垂直表头多个节显示的文本,该方法无返回值。设置了标签的节自动会创建该节对应的项; |
setTextAlignment() | 设置单元格内文本的对齐方式; |
currentColumn() | 获取选中列的下标; |
currentRow() | 获取选中行的下标; |
currentItem() | 获取item之后,可用text()方法获取内容; |
selectedItems() | 获取List[QTableWidgetItem],可用循环获取每一列的内容值; |
item(int row, int column) | 用行和列的下标获取内容。 |
程序清单:tablewidget.py
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget,
QHBoxLayout, QTableWidget, QTableWidgetItem, QAbstractItemView
# 继承QWidget
class TableWidget(QWidget):
customer_list = [("张三", "男", "1981-06-02", "13888888888",
"南极路企鹅临舍傍9号999路"),
("李四", "男", "1988-08-08", "13999999999",
"北极熊店的下坡路中6号666路"),
("李清照", "女", "1986-06-06", "13666666666",
"秦岭古诗庙湾道8号888路")]
table_widget = None
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 设置布局
layout = QHBoxLayout()
# 数据层次结构,10行5列
self.table_widget = QTableWidget(10, 5)
# 最后一列自动拉伸
self.table_widget.horizontalHeader().setStretchLastSection(True)
# 输入内容
for (row, customer) in enumerate(self.customer_list):
for column in range(len(customer)):
self.table_widget.setItem(row, column,
QTableWidgetItem(customer[column]))
layout.addWidget(self.table_widget)
# 合并行列
self.table_widget.setSpan(0, 1, 2, 1)
# 单元格不可编辑
self.table_widget.setEditTriggers(QTableWidget.NoEditTriggers)
# 选择单行
self.table_widget.setSelectionBehavior(QAbstractItemView
.SelectRows)
# 单击事件
self.table_widget.cellClicked.connect(self.table_click)
# 双击事件
self.table_widget.cellDoubleClicked.connect(self.double_click)
self.setLayout(layout)
# 调整窗口大小
self.resize(900, 500)
# 窗口居中
self.center()
# 窗口标题
self.setWindowTitle("QTableWidget应用")
# 显示窗口
self.show()
# 获取文件夹路径
def table_click(self):
# 获取选中文本所在的列
item_list = self.table_widget.selectedItems()
for item in item_list:
print(item.text())
# 选中行
row = self.table_widget.currentRow()
# 选中列
column = self.table_widget.currentColumn()
data = self.table_widget.item(row, column).text()
print(data)
def double_click(self):
# 选中行
data = self.table_widget.currentItem()
print("选中单元格的数据:%s" % data.text())
# 实现居中
def center(self):
f = self.frameGeometry()
c = QDesktopWidget().availableGeometry().center()
f.moveCenter(c)
self.move(f.topLeft())
if __name__ == "__main__":
app = QApplication(sys.argv)
w = TableWidget()
sys.exit(app.exec_())
运行程序之后,弹出的窗口如下:
好了,QTableWidget的内容就说到这了,关注我,下一节更精彩。
码字不易,你的关注和转发是对我最大的鼓励,谢谢!
一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,关注我,你就赚到了。我正在分享Python、前端、Java和App方面的干货了。赶紧来围观啊!!!
猜你喜欢
- 2024-10-20 Qt 开发经验总结 qt软件开发
- 2024-10-20 Qt QTableWidget用法总结 qtablewidget qtableview
- 2024-10-20 实战PyQt5: 068-MV框架中的项视图部件
- 2024-10-20 Qt开发经验小技巧231-235 qt开发入门简介
- 2024-10-20 Python+PyQt5进阶(5) pyqt5 django
- 2024-10-20 Qt项目升级到Qt6经验总结 qt更新界面
- 2024-10-20 QTableWidget表格中增删数据 qtablewidget清空表格
- 2024-10-20 C/C++ Qt StatusBar 底部状态栏应用
- 2024-10-20 Qt的常用控件 qt控件详解
- 2024-10-20 Python PyQt5通过QTableWidget表格控件操作SQLite数据库
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)