如何在Qtreeview中显示QAbstractListModel?

问题描述 投票:0回答:1

我正在使用 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?

python qtableview qlistview qidentityproxymodel
1个回答
0
投票

从 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_())

© www.soinside.com 2019 - 2024. All rights reserved.