目录
在 PySide6 中,QTableWidget 是一个用于展示和编辑表格数据的控件。它提供了在窗口中创建和显示表格的功能,并允许用户通过单元格来编辑数据。
要使用 QTableWidget,首先需要创建一个 QTableWidget 对象,并设置其行数和列数。可以通过 setRowCount() 和 setColumnCount() 方法来设置行和列的数量。
一旦创建了表格,可以使用 setItem() 方法将数据添加到表格的单元格中。setItem() 方法接受三个参数:行索引、列索引和 QTableWidgetItem 对象,用于指定要添加到表格中的数据。
除了添加数据,QTableWidget 还提供了其他一些功能,如插入和删除行或列、调整单元格大小等。可以使用 insertRow() 和 insertColumn() 方法来插入行或列,使用 removeRow() 和 removeColumn() 方法来删除行或列。
此外,可以通过设置表格的属性来定制表格的外观和行为。例如,可以使用 setHorizontalHeader() 和 setVerticalHeader() 方法来设置表头,使用 setSortingEnabled() 方法来启用排序功能等。
下面是一个简单的示例代码,演示了如何在 PySide6 中使用 QTableWidget:
import sys
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QTableWidget, QTableWidgetItem
class MyApp(QWidget):
? ? def __init__(self):
? ? ? ? super().__init__()
? ? ? ? self.setWindowTitle('数据表格示例')
? ? ? ? self.setGeometry(100, 100, 500, 500)
? ? ? ? # 创建一个表格
? ? ? ? self.table = QTableWidget()
? ? ? ? self.table.setRowCount(5) ?# 设置行数
? ? ? ? self.table.setColumnCount(2) ?# 设置列数
? ? ? ? # 添加数据到表格中
? ? ? ? for i in range(5):
? ? ? ? ? ? for j in range(2):
? ? ? ? ? ? ? ? item = QTableWidgetItem(f"行{i + 1}列{j + 1}") ?# 创建 QTableWidgetItem 对象并设置文本
? ? ? ? ? ? ? ? self.table.setItem(i, j, item) ?# 将 QTableWidgetItem 对象添加到表格中
? ? ? ? # 创建一个按钮来添加行数据
? ? ? ? self.add_row_button = QPushButton('添加行数据')
? ? ? ? self.add_row_button.clicked.connect(self.add_row)
? ? ? ? # 创建一个按钮来添加列数据
? ? ? ? self.add_column_button = QPushButton('添加列数据')
? ? ? ? self.add_column_button.clicked.connect(self.add_column)
? ? ? ? # 创建一个垂直布局并添加控件
? ? ? ? layout = QVBoxLayout()
? ? ? ? layout.addWidget(self.table) ?# 添加表格到布局中
? ? ? ? layout.addWidget(self.add_row_button) ?# 添加按钮到布局中
? ? ? ? layout.addWidget(self.add_column_button) ?# 添加按钮到布局中
? ? ? ? self.setLayout(layout) ?# 设置窗口的布局为垂直布局
? ? def add_row(self):
? ? ? ? self.table.insertRow(self.table.rowCount()) ?# 在表格末尾插入一行
? ? def add_column(self):
? ? ? ? for i in range(self.table.rowCount()): ?# 遍历每一行并添加一列数据
? ? ? ? ? ? item = QTableWidgetItem(f"新列{i + 1}") ?# 创建 QTableWidgetItem 对象并设置文本
? ? ? ? ? ? self.table.setItem(i, self.table.columnCount() - 1, item) ?# 将 QTableWidgetItem 对象添加到表格中当前行的最后一列
? ? ? ? ? ? self.table.setSpan(i, self.table.columnCount() - 1, 1, 2) ?# 将当前行的最后一列跨度设置为2,以覆盖新插入的列和原有列
? ? ? ? ? ? self.table.setColumnWidth(self.table.columnCount() - 1, 100) ?# 设置新插入列的宽度为100像素
if __name__ == '__main__':
? ? app = QApplication(sys.argv)
? ? ex = MyApp()
? ? ex.show()
? ? sys.exit(app.exec_())