- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 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/
我的问题是,在使用时 QStandarditemmodel::setData(const QModelIndex &index, const QVariant &value, int role) 似乎
我是 qt 的新手,我在 QTtableview 中使用 QStandardItemModel。 请建议, 如何更改行和列标题名称。目前它显示 1,2,3,4 如何让 QStandardItemMod
我有一个 QTableView ,填充了 QStandardItemModel . 我经常通过网络更新模型,模型也由用户直接通过 QTableView 更新。 . 现在我喜欢在用户更改一些数据时调用一
我喜欢制作我的 QStandardItemModel 来填充 qtreeview 中的项目将行追加到 View 中所有已定义项目的顶部。类似于 twitter View ,新项目优先。我在 QStan
为了在 QTableView 中显示一些数据,我使用一个函数来计算 QStandardItemModel 并将其发送回调用函数。 函数调用: QStandardItemModel MyModel =
QStandardItemModel::QStandardItemModel(QObject * parent = 0) Constructs a new item model with the g
标题没问题,但我只有三个空行。 永远不会调用 FileConfig::data 方法! 你知道为什么吗? model= new MyModel; model->setHeaderData(0, Qt:
我是 Qt 的初学者,我正在努力从 XML 文件填充 QStandardItemModel。 我尝试了以下操作,整个项目运行成功,但 QtableView 不显示数据。 这是我的main.cpp: v
我试过使用 Qt void QStandardItem::insertRow(int row, const QList &items)和 void QStandardItem::appendRow(c
我想做的是,我想制作一个带有可检查项目的 ListView 。我能够使用 QStandardItemModel 作为我的模型来做到这一点。现在我需要做的是添加一些需要自定义数据方法的功能。因此,正如我
我有一个包含 100,000 条数据记录的 QStandardItemModel,以及一个用于过滤和排序功能的 QSortFilterProxyModel。我想根据其中一列的值删除大量记录,比如 10
我有一个 QStandardItemModel,它显示在 q QTreeView 中。工作正常。 为了突出显示相关行,我想突出显示其中的一些行:因此我有一个 QStringList,其中包含要突出显示
如何将 BundleItem 类的项附加到 QListView 的 QStandardItem 模型?当附加它们时,我只想使用 BundleItem 的 Name 属性显示在 ListView 中。我
当分配在堆栈上的 QStandardItemModel 被销毁时,模型中的指针指向的对象会发生什么(例如 item/ item2 指针,如下例所示): QStandardItem* item = ne
有没有办法将 QStandardItemModel 复制到另一个 QStandardItemModel? 或者我必须遍历每个项目并将其附加到另一个模型? 最佳答案 一件元素只能由一个模型拥有。这就是为
目前,我想更新 QStandardItemModel 中的行项目,不会丢失相应 QTableView 中的排序顺序和行选择。 我测试了两种方法: 通过 clear() 清除模型并重新添加行会“破坏”包
我试图删除 QTableView 的所有选定索引, 现在我使用: foreach (const QModelIndex & idx, model->selectionModel()->selected
目前,我想更新 QStandardItemModel 中的行项目,不会丢失相应 QTableView 中的排序顺序和行选择。 我测试了两种方法: 通过 clear() 清除模型并重新添加行会“破坏”包
我正在创建一个应用程序,我需要使用另一个类(class)提供给我的列表来制作 list 。用户将选中他们想要的项目旁边的复选框,然后单击按钮。对于那些已检查的行,我想打印“您检查了号码 ___”。在相
我正在尝试使用 QTreeView 和 QStandardItemModel 在 PyQt4 中实现帐户结构(带有子帐户)。经过大量的试验和错误,我终于准备好了 TreeView 。现在,我希望当我单
我是一名优秀的程序员,十分优秀!