【问题标题】:When subclassing QAbstractItemModel, nothing shown in QTreeView子类化 QAbstractItemModel 时,QTreeView 中没有显示任何内容
【发布时间】:2013-05-27 20:03:44
【问题描述】:

我正在尝试使用simple tree model,但我无法使该示例在我的项目中运行。

首先,我能够毫无问题地使用 QTreeView 和 QStandardItemModel。在以下情况下,我可以看到我的 QTreeView 里面有数据。查看工作代码:

constructor{
m_pModel = new QStandardItemModel();
ui.treeViewDevicesList->setModel(m_pModel);
fillTreeView(devicesList);
}

void GatewayDeviceViewerEditor::fillTreeView(const std::vector<Payload> &devicesList)
{
    QVector<QStandardItem *> parents(MAX_PARENTS);
    parents[0] = m_pModel->invisibleRootItem();

    for (vector<Payload>::const_iterator it = devicesList.begin() ; it != devicesList.end(); ++it)
    {
        QStandardItem *pTreeViewItem = new QStandardItem();
        string rootTitle =  it->deviceId + " " + it->deviceName + " " + it->status ;
        pTreeViewItem->setText(rootTitle.c_str());
        parents[0]->appendRow(pTreeViewItem);
       // parents[1] = pTreeViewItem;
    }
}

现在,以下代码不起作用。我正在尝试对模型进行子类化。在这种情况下,QTreeView 显示出来但完全是空的。有些东西我猜我不明白。

entryPoint{
DeviceTreeModel deviceTreeModel(devicesList);
ui.treeViewDevicesList->setModel(&deviceTreeModel);
}

DeviceTreeModel::DeviceTreeModel(const std::vector<Payload> &devicesList, QObject *parent)
    : QAbstractItemModel(parent)
{
    QList<QVariant> rootData;
    rootData << "Title" << "Summary";
    m_pRootItem = new DeviceTreeItem(rootData);
    setupModelData(devicesList, m_pRootItem);
}

void DeviceTreeModel::setupModelData(const std::vector<Payload> &devicesList, DeviceTreeItem *parent)
{
    QList<DeviceTreeItem*> parents;
    parents << parent;


    for (vector<Payload>::const_iterator it = devicesList.begin() ; it != devicesList.end(); ++it)
    {
        string rootTitle =  it->deviceId + " " + it->deviceName + " " + it->status ;
        QString test(rootTitle.c_str());
        QList<QVariant> columnData;
        columnData << test << "Summary";

        parents.last()->appendChild(new DeviceTreeItem(columnData, parents.last()));
    }

}

【问题讨论】:

    标签: qt qabstractitemmodel qstandarditemmodel


    【解决方案1】:

    entryPoint中,我认为deviceTreeModel需要分配new,而不是作为退出函数时会被销毁的本地实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 2016-07-20
      • 2016-04-01
      • 2014-09-29
      • 2020-03-24
      • 2014-07-21
      • 2016-02-19
      相关资源
      最近更新 更多