我正在使用 QPdfsearchmodel 和 QIdentityProxyModel 来搜索 pdf 并返回包含我正在查找的信息的元组。如何将四个项目中的每一个加载到 4 列 QTableview 而不是单列 QListView 中?
这是我的代理模型类:
class MyProxy(QIdentityProxyModel):
def __init__(self, parent=None):
super().__init__(parent)
def data(self,index, role):
if role == Qt.ItemDataRole.DisplayRole:
return f"('{super().data(index, role)}','{super().data(index,256)}','{super().data(index,257)}','{super().data(index,258)}')"
return super().data(index,role)
如何加载到 4 列 Qtableview,每列都有一项数据而不是单列 QListview?
从 PyQt5.QtWidgets 导入 QApplication、QTreeView、QAbstractItemView、QAbstractListModel、QWidget、QVBoxLayout 从 PyQt5.QtCore 导入 Qt,QModelIndex
MyModel 类(QAbstractListModel): def init(自身,数据=无,父=无): super(MyModel, self).init(父) self._data = 数据或 []
def rowCount(self, parent=QModelIndex()):
return len(self._data)
def data(self, index, role=Qt.DisplayRole):
if role == Qt.DisplayRole:
return str(self._data[index.row()])
return None
类 MyWindow(QWidget): def init(自身): super(MyWindow, self).init()
self.model = MyModel(["Item 1", "Item 2", "Item 3"])
self.tree_view = QTreeView(self)
self.tree_view.setModel(self.model)
self.tree_view.setSelectionBehavior(QAbstractItemView.SelectRows)
layout = QVBoxLayout(self)
layout.addWidget(self.tree_view)
self.setLayout(layout)
if name == "main": 导入系统 应用程序 = QApplication(sys.argv) 窗口=我的窗口() 窗口.show() sys.exit(app.exec_())