Python PyQt4:如何使用Qt.ItemIsTristate使用QTreeView自动选择子级?
过去,我在QTreeWidget中使用Qt.ItemIsTristate标志,在用户选择某个项目时自动选择子项 以下是QTreeWidget的一个示例:Python PyQt4:如何使用Qt.ItemIsTristate使用QTreeView自动选择子级?,python,pyqt4,pyside,qtreeview,Python,Pyqt4,Pyside,Qtreeview,过去,我在QTreeWidget中使用Qt.ItemIsTristate标志,在用户选择某个项目时自动选择子项 以下是QTreeWidget的一个示例: import sys from PyQt4 import QtGui, QtCore from PyQt4.QtCore import Qt class MainForm(QtGui.QMainWindow): def __init__(self, parent=None): super(MainForm, self)
import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import Qt
class MainForm(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainForm, self).__init__(parent)
self.tree = QtGui.QTreeWidget()
for k in range(0, 4):
parent = self.tree
for i in range(0, 4):
item = QtGui.QTreeWidgetItem(parent)
item.setText(0, "item %d %d" % (k, i) )
item.setFlags(item.flags() | Qt.ItemIsTristate | Qt.ItemIsUserCheckable)
item.setCheckState(0, Qt.Unchecked)
parent = item
self.tree.expandToDepth(4)
self.setCentralWidget(self.tree)
self.resize(200, 300)
def main():
app = QtGui.QApplication(sys.argv)
form = MainForm()
form.show()
app.exec_()
if __name__ == '__main__':
main()
使用此代码,选中项目时,也会选中其所有子项
现在,我需要做同样的事情,但是使用QTreeView。
我已经测试了以下代码:
import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import Qt
class MainForm(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainForm, self).__init__(parent)
self.model = QtGui.QStandardItemModel()
for k in range(0, 4):
parentItem = self.model.invisibleRootItem()
for i in range(0, 4):
item = QtGui.QStandardItem("item %d %d" % (k,i) )
item.setFlags(item.flags() | Qt.ItemIsTristate | Qt.ItemIsUserCheckable)
item.setCheckState( Qt.Unchecked)
parentItem.appendRow(item)
parentItem = item
self.view = QtGui.QTreeView()
self.view.setModel(self.model)
self.view.expandToDepth(4)
self.setCentralWidget(self.view)
self.resize(200, 300)
def main():
app = QtGui.QApplication(sys.argv)
form = MainForm()
form.show()
app.exec_()
if __name__ == '__main__':
main()
使用此代码,选中项目时,不会选中其子项
您是否有任何关于将QTreeView/QStandardItem版本设置为与第一个示例中相同的工作方式的提示
我使用的是PyQt4.11
致以最良好的祝愿,
Elby要选择特定模型索引的所有子项,需要执行以下操作 1) 启用多个选择 self.view.SetSelectionMode(QAbstractItemView::MultiSelection) 2) 使用“行计数”和“索引”方法沿树进行遍历 3) 使用选择模型对模型索引执行选择 self.view.SelectionModel().select(qmodelindex,QItemSelectionModel.select)
S:我使用C++ API,所以在案例和语法中可能有错误,
< >选择一个特定模型索引的所有子需要执行以下操作。 1) 启用多个选择 self.view.SetSelectionMode(QAbstractItemView::MultiSelection) 2) 使用“行计数”和“索引”方法沿树进行遍历 3) 使用选择模型对模型索引执行选择 self.view.SelectionModel().select(qmodelindex,QItemSelectionModel.select)S:我使用C++ API,所以在语法和语法上可能有错误