QTreeView 无法正确显示

问题描述 投票:0回答:0

我遇到一个错误,QTreeView 无法正确显示目录、文件和图标。 我在 Github 上的代码

见下图:

QTreeView树形文件夹从json数据显示,从图中可以看到,

.qmake.stash
应该位于文件位置,但现在
.qmake.stash
位于目录位置,
release
应该是一个目录,但是现在
release
是一个文件,debug和release的图标无法正确显示。

我认为它与下面的代码相关,下面的代码来自 make-tree-folder-from-qtreeview-or-qtreewidget

通话功能为:

appendToModel(&model, name.split("/", Qt::SkipEmptyParts), LastModifiedTime);

MyWidget::appendToModel 函数是:

void MyWidget::appendToModel(QStandardItemModel *model, const QStringList & list, const QString & LastModifiedTime){
    parentItem = model->invisibleRootItem();


    for(QStringList::const_iterator it = list.begin(); it != list.end(); ++it)
    {
        item = findChilItem(parentItem, *it);
        if(item){
            parentItem = item;
            continue;
        }
        item = new QStandardItem(*it);
        item->setEditable(false);
        if(std::next(it) == list.end()){
            item->setIcon(provider.icon(QFileIconProvider::File));
            parentItem->appendRow({item, new QStandardItem(LastModifiedTime)});
        }
        else{
            item->setIcon(provider.icon(QFileIconProvider::Folder));
            parentItem->appendRow(item);
        }
        parentItem = item;
    }

}

QStandardItem* MyWidget::findChilItem(QStandardItem* it, const QString & text){
    if(!it->hasChildren())
        return nullptr;
    for(int i=0; i< it->rowCount(); i++){
        if(it->child(i)->text() == text)
            return it->child(i);
    }
    return nullptr;
}

但是我找不到错误在哪里,当我调试时,输出是数字而不是目录和文件的名称。

请帮我解决这个问题。谢谢你。

qt qtreeview qtwidgets qstandarditemmodel qstringlist
© www.soinside.com 2019 - 2024. All rights reserved.