gpt4 book ai didi

python - QTreeView/QStandardItemModel 中选定的行

转载 作者:行者123 更新时间:2023-12-01 05:02:10 28 4
gpt4 key购买 nike

我正在尝试使用 QTreeView 和 QStandardItemModel 在 PyQt4 中实现帐户结构(带有子帐户)。经过大量的试验和错误,我终于准备好了 TreeView 。现在,我希望当我单击 TreeView 中的特定行时发生一些事情。我从 GTK 工具包获得的经验表明,我会监听单击一行时发出的某种信号,然后编写一个信号处理程序来找出单击了哪一行。我不知道如何在 PyQt 中做到这一点。有什么建议吗?

最佳答案

在类里面QtGui.QTreeView有信号void clicked (const QModelIndex&) & void pressed (const QModelIndex&)可供使用。该信号函数位于 QtGui.QAbstractItemView继承于QtGui.QTreeView .

来自该信号的数据属于 QtCore.QModelIndex 类,所以这个类有 QAbstractItemModel QModelIndex.model (self)可以获取您的模型数据QtGui.QStandardItemModel .

示例;

import sys
from PyQt4 import QtGui

class QCustomTreeView (QtGui.QTreeView):
def __init__ (self, parentQWidget = None):
super(QCustomTreeView, self).__init__(parentQWidget)
self.pressed.connect(self.myPressedEvent)

def myPressedEvent (self, currentQModelIndex):
# Use QModelIndex to show current data pressed
print currentQModelIndex.column(), currentQModelIndex.row()
print currentQModelIndex.data().toString()
# Also can implement your QStandardItemModel here
currentQStandardItemModel = currentQModelIndex.model()

myQApplication = QtGui.QApplication([])
myQTreeView = QCustomTreeView()
headerQStandardItemModel = QtGui.QStandardItemModel()
headerQStandardItemModel.setHorizontalHeaderLabels([''] * 4)
myQTreeView.setModel(headerQStandardItemModel)
# Append data row 1
row1QStandardItem = QtGui.QStandardItem('ROW 1')
row1QStandardItem.appendRow([QtGui.QStandardItem(''), QtGui.QStandardItem('1'), QtGui.QStandardItem('3'), QtGui.QStandardItem('5')])
headerQStandardItemModel.appendRow(row1QStandardItem)
# Append data row 2
row2QStandardItem = QtGui.QStandardItem('ROW 2')
row2QStandardItem.appendRow([QtGui.QStandardItem(''), QtGui.QStandardItem('2'), QtGui.QStandardItem('4'), QtGui.QStandardItem('6')])
headerQStandardItemModel.appendRow(row2QStandardItem)
myQTreeView.show()
sys.exit(myQApplication.exec_())

关于python - QTreeView/QStandardItemModel 中选定的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25837119/

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