Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将QTreeView设置为QVariantMap内容_Qt - Fatal编程技术网

将QTreeView设置为QVariantMap内容

将QTreeView设置为QVariantMap内容,qt,Qt,是否有一种自动方法可用于将QVariantMap的内容设置为QTreeView,或者我必须为此定义一个模型 提前感谢请原谅我必须用python(PyQt4)提供我的示例。有两种方法可以实现您的解决方案。您可以将QVariantMap数据推送到连接到视图的模型中(您可以独立管理该视图),或者,您必须定义自己的模型,将QVariantModel作为数据源,以主动驱动数据 我提供了一个简单的例子,将您的数据推送到一个标准模型中。python中没有QVariantMap,所以我使用的是key int=>

是否有一种自动方法可用于将QVariantMap的内容设置为QTreeView,或者我必须为此定义一个模型


提前感谢

请原谅我必须用python(PyQt4)提供我的示例。有两种方法可以实现您的解决方案。您可以将QVariantMap数据推送到连接到视图的模型中(您可以独立管理该视图),或者,您必须定义自己的模型,将QVariantModel作为数据源,以主动驱动数据

我提供了一个简单的例子,将您的数据推送到一个标准模型中。python中没有QVariantMap,所以我使用的是key int=>QVariant字符串值字典

class View(QtGui.QWidget):

    def __init__(self):
        super(View,self).__init__()

        self.layout = QtGui.QVBoxLayout(self)
        self.table = QtGui.QTableView()
        self.layout.addWidget(self.table)

        self.button = QtGui.QPushButton("Update")
        self.layout.addWidget(self.button)

        # Using a normal QStandardItemModel and setting
        # it on the table view.
        self.model = QtGui.QStandardItemModel(self)
        self.table.setModel(self.model)

        self.button.clicked.connect(self.populate)

    def populate(self):
        # no QVariantMap in PyQt4. Creating a dictionary on the fly
        # of int key => QVariant string...  {0: QVariant('foo'), ...}
        variantMap = {i:QtCore.QVariant('foo') for i in xrange(10)}

        col = 0
        row = 0
        # loop over each element in your map, and add a QStandardItem
        # at a specific row/column
        for name, val in variantMap.iteritems():
            item = QtGui.QStandardItem(val.toString())
            self.model.setItem(row, col, item)
            row += 1
我创建了一个QTableView和一个QStandardItemModel。然后我在视图上设置模型。我创建了一个连接到填充插槽的按钮。调用此插槽时,我会动态创建一个“QVariantMap”类型的对象来模拟您的数据容器。然后我循环该容器的内容,并为每个单元格创建一个
QStandardItem
。我在模型的特定列和行中设置了该项。在本例中,我只是使用列0并附加行


我希望这个例子能很容易地解释您的情况。

您希望地图作为数据源还是只是一个临时容器?您可以使用标准模型并将数据加载到其中…但如果您想直接使用地图,则必须将其包装到模型中。我只想将地图中的数据显示到树状视图中