gpt4 book ai didi

python - QSortFilterProxyModel 获取过滤后的数据

转载 作者:太空宇宙 更新时间:2023-11-03 18:40:22 26 4
gpt4 key购买 nike

我对 Qt 中的此类对象非常缺乏经验,我需要知道是否有办法在过滤后检索数据(用于对它们执行某些操作,例如导出到另一个文件中)。

情况是这样的,我从数据库获取数据并将其存储在 python 列表中,之后我创建一个 QTableView 模型并使用设置为包含此数据的 QSortFilterProxyModel 对其进行初始化。界面中有一个QLineEdit连接到setFilterRegExp方法,其目的是搜索QTableView中的数据。

我需要创建一个按钮(或其他)来写入一个文件,其中包含当前显示在 GUI 上的数据,但我不知道如何检索当前显示的数据。

感谢您的任何建议。

class recordsTableModel(QAbstractTableModel):

def __init__(self, records, parent = None):
QAbstractTableModel.__init__(self, parent)
self.__records = records

def rowCount(self, parent):
return len(self.__records)

def columnCount(self, parent):
return len(self.__records[0])

def flags(self, index):
return Qt.ItemIsEnabled | Qt.ItemIsSelectable

def data(self, index, role):
if role == Qt.DisplayRole:
row = index.row()
column = index.column()
value = self.__records[row][column]

return value

def headerData(self, section, orientation, role):
if role == Qt.DisplayRole:
if orientation == Qt.Horizontal:
return self.__records[0]._fields[section]

class AndroidDialog(QDialog, ui_android_dialog.Ui_androidDialog):
def __init__(self, parent=None):
super(AndroidDialog, self).__init__(parent)
self.setupUi(self)

self.proxyModelContact = QSortFilterProxyModel(self)
self.proxyModelContact.setSourceModel(recordsTableModel(self.contacts))
self.proxyModelContact.setFilterKeyColumn(-1)
self.proxyModelContact.setFilterCaseSensitivity(Qt.CaseInsensitive)
self.contactsTableView.setModel(self.proxyModelContact)

self.contactsExportToolButton.clicked.connect(self.printData)

def printData(self):
print "%s" % self.proxyModelContact.rowCount()
print "%s" % self.proxyModelContact.data(self.proxyModelContact.index(0, 0))

据我所知,索引应该指向模型中的项目(对我来说是一个表),因此它应该打印第一列中的第一项。它立即打印:
PyQt4.QtCore.QVariant 对象位于 0x02F7B030

最佳答案

您可以使用附加到 View 的模型的 rowCountcolumnCountdata 方法来访问显示的数据。在您的情况下,模型是 QSortFilterProxyModel

关于python - QSortFilterProxyModel 获取过滤后的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20632503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com