阅读量:6
在QTableView中设置多列的方法是使用QStandardItemModel来创建模型,并在模型中添加相应的列。以下是设置多列的示例代码:
from PyQt5.QtWidgets import QApplication, QTableView, QVBoxLayout, QWidget, QMainWindow, QHeaderView, QAbstractItemView, QMenu from PyQt5.QtGui import QStandardItemModel, QStandardItem from PyQt5.QtCore import Qt class TableView(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("QTableView Example") self.setGeometry(100, 100, 600, 300) # 创建一个模型 self.model = QStandardItemModel(4, 3) self.model.setHorizontalHeaderLabels(["Column 1", "Column 2", "Column 3"]) # 添加数据到模型的每一列 for row in range(4): item1 = QStandardItem("Data 1") item2 = QStandardItem("Data 2") item3 = QStandardItem("Data 3") self.model.setItem(row, 0, item1) self.model.setItem(row, 1, item2) self.model.setItem(row, 2, item3) # 创建一个TableView并设置模型 self.table_view = QTableView() self.table_view.setModel(self.model) # 设置TableView的属性 self.table_view.setEditTriggers(QAbstractItemView.NoEditTriggers) # 禁止编辑单元格 self.table_view.setSelectionBehavior(QAbstractItemView.SelectRows) # 选择整行 self.table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) # 列宽自适应 self.table_view.setContextMenuPolicy(Qt.CustomContextMenu) # 设置右键菜单 # 将TableView放在主窗口中 self.setCentralWidget(self.table_view) if __name__ == '__main__': app = QApplication([]) window = TableView() window.show() app.exec()
在上述示例中,我们创建了一个具有3列的QStandardItemModel,并将其设置为QTableView的模型。然后,我们使用QStandardItem添加数据到每一列。最后,我们设置了一些TableView的属性,例如禁止编辑单元格、选择整行等。
请注意,上述示例是使用PyQt5编写的,如果你使用的是PySide2,则需要稍作修改。