QTableViewで複数の列を設定する方法を教えてください
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 で利用する場合はちょっとした修正が必要になります。