【问题标题】:QTreeView multiple column, possible?QTreeView 多列,可能吗?
【发布时间】:2011-11-29 02:16:53
【问题描述】:

我正在使用QStandardItemModelQTreeView,我希望左窗格显示节点,右窗格显示节点的值,在本例中为第 0 列和第 1 列。

节点的构造非常成功,但是当我尝试使用 QStandardItem::insertRow(1, XX) 将值放入该模型时,该项目根本没有出现,我错过了什么吗?

@更新:

由于我递归创建节点,我使用:

void Widget::addNode(QStandardItem *parent, const QVariant & data)
{
     QStandardItem *childKey = ...; // left pane
     QStandardItem *childValue = ...; // right pane

     parent->appendRow (childKey);

}

我不能只使用 model.setItem() 追加 childValue ,因为它去了错误的行,并且 QTreeView 在添加新节点时默认不展开。

【问题讨论】:

标签: qt4 qtreeview qt4.7


【解决方案1】:

检查您的代码以确保您已告知模型您想要多少列,即您已调用QStandardItemModel::setColumnCount(),以告知模型额外的列。

编辑

然后你需要设置每列中每个项目的值。一种方法是使用 QStandardItemModel::setItem ( int row, int column, QStandardItem * item)

将给定行和列的项目设置为项目。模型拥有该项目的所有权。如有必要,将增加行数和列数以适应项目。给定位置的上一个项目(如果有的话)被删除。

【讨论】:

  • 已应用,但还有一个问题,它总是向第 0 列插入行,我该如何指定列..
【解决方案2】:

您可以一次将多个列添加到同一个子节点的父节点,如下所示:

void Widget::addNode(QStandardItem *parent, const QVariant & data)
{
     QStandardItem *childKey = ...; // left pane
     QStandardItem *childValue = ...; // right pane

     QList<QStandardItem*> childColumns;
     childColumns<< childKey << childValue;

     parent->appendRow(childColumns);

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多