当前位置:首页 >> 编程语言 >> 【PyQt学习篇 · ⑭】:QTableView的使用,开奇网

【PyQt学习篇 · ⑭】:QTableView的使用,开奇网

0evadmin 编程语言 2
文件名:【PyQt学习篇 · ⑭】:QTableView的使用,开奇网 【PyQt学习篇 · ⑭】:QTableView的使用

文章目录 QTableView的使用示例

QTableView的使用

QTableView 是 PyQt 中用于显示表格数据的窗口部件,它提供了一个灵活的方式来显示和编辑数据。下面是一些关于 QTableView 的使用的具体信息:

创建 QTableView 对象:

from PyQt5.QtWidgets import QApplication, QTableViewapp = QApplication([]) # 创建应用程序对象tableView = QTableView() # 创建 QTableView 对象

设置数据模型:

QTableView 依赖于数据模型来提供数据。常用的数据模型有 QStandardItemModel 和 QAbstractTableModel。可以根据数据的不同复杂性来选择合适的数据模型。

from PyQt5.QtGui import QStandardItemModel# 创建数据模型model = QStandardItemModel()# 设置表头model.setHorizontalHeaderLabels(["Column 1", "Column 2"])# 设置数据data = [["Row 1, Column 1", "Row 1, Column 2"],["Row 2, Column 1", "Row 2, Column 2"],# ...]for i, row in enumerate(data):for j, value in enumerate(row):item = QStandardItem(value)model.setItem(i, j, item)# 将数据模型设置给 QTableViewtableView.setModel(model)

显示 QTableView:

tableView.show()

设置选择模式:

from PyQt5.QtCore import QttableView.setSelectionMode(QTableView.SingleSelection) # 单选模式tableView.setSelectionBehavior(QTableView.SelectRows) # 选择整行tableView.setEditTriggers(QTableView.NoEditTriggers) # 禁止编辑

获取选中的数据:

selected_indexes = tableView.selectedIndexes()selected_values = []for index in selected_indexes:# 判断索引是否有效if index.isValid():value = index.data()selected_values.append(value)

其他常用操作:

调整列宽:tableView.resizeColumnsToContents()调整行高:tableView.resizeRowsToContents()隐藏水平表头:tableView.horizontalHeader().setVisible(False)设置表格样式:tableView.setStyleSheet("QTableView { background-color: white; }") 示例 import sysfrom PyQt5.QtWidgets import *from PyQt5.QtCore import Qtfrom PyQt5.QtGui import QStandardItemModel, QStandardItemclass MyWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle("QTableView Example")# 创建数据模型self.model = QStandardItemModel(4, 3)self.model.setHorizontalHeaderLabels(["Name", "Age", "Gender"])# 添加数据data = [["Alice", "25", "Female"],["Bob", "32", "Male"],["Charlie", "42", "Male"],["Diana", "28", "Female"]]for row in range(len(data)):for col in range(len(data[row])):item = QStandardItem(data[row][col])self.model.setItem(row, col, item)# 创建 QTableViewself.table_view = QTableView()self.table_view.setModel(self.model)# self.table_view.setSelectionBehavior(QTableView.SelectRows) # 设置 QTableView 控件的选择行为为选择整行(默认为选择单个单元格)self.table_view.setContextMenuPolicy(Qt.CustomContextMenu) # 设置 QTableView 控件的上下文菜单的策略为自定义菜单策略,即用户可以通过customContextMenuRequested信号自定义显示菜单self.table_view.customContextMenuRequested.connect(self.show_context_menu) # 将self.tabel_view控件的 custonContextMenuRequested 信号连接到自定义函数 show_context_menu 上,以便于显示自定义的上下文菜单# 设置表头自适应宽度self.table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)# 创建主布局,并将 QTableView 放入其中layout = QVBoxLayout()layout.addWidget(self.table_view)# 创建 QWidget,并将布局设置为其主布局central_widget = QWidget()central_widget.setLayout(layout)self.setCentralWidget(central_widget)def show_context_menu(self, position):# 右键菜单menu = QMenu(self)# 删除行delete_action = QAction("Delete", self)delete_action.triggered.connect(self.delete_selected_row)# 添加行append_row_action = QAction('Append Row', self)append_row_action.triggered.connect(self.append_row)# 插入行insert_row_action = QAction('Insert Row', self)insert_row_action.triggered.connect(self.insert_row)# 获取值getValue_action = QAction('Get Value', self)getValue_action.triggered.connect(self.get_selected_values)menu.addActions([delete_action, append_row_action, insert_row_action, getValue_action])# 显示菜单menu.exec_(self.table_view.viewport().mapToGlobal(position))# 删除行def delete_selected_row(self):# 删除选中的行rows = sorted(set(index.row() for index in self.table_view.selectedIndexes()), reverse=True)for row in rows:self.model.removeRow(row)# 添加行def append_row(self):# 创建空的数据项empty_item = QStandardItem()self.model.appendRow([empty_item, empty_item, empty_item])# 插入行def insert_row(self):# 创建空的数据项empty_item = QStandardItem()# 获取当前选中的行selected_row = self.table_view.currentIndex().row()# 插入空行到选中行下方self.model.insertRow(selected_row + 1, [empty_item, empty_item, empty_item])def get_selected_values(self):selected_row, selected_column = self.table_view.currentIndex().row(), self.table_view.currentIndex().column()item = self.model.item(selected_row, selected_column)print(item.text())if __name__ == "__main__":app = QApplication(sys.argv)window = MyWindow()window.show()sys.exit(app.exec_())

运行结果:

选中“Bob”,鼠标点击右键,点击“Delete”。 鼠标右键,点击“Append Row” 鼠标右键,点击“Insert Row” 鼠标右键,点击“Get Value”
协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接