Phi*_*ent 3 c++ qt qt4 qtreewidget qt5
我有一个QTreeWidget
带QTreeWidgetItem
项目,但只有根节点显示其图标:
我一直在摸不着什么可以把它关掉,任何提示?
ui->folderTree1->setUpdatesEnabled( false );
QTreeWidgetItem* treeRoot1 = new QTreeWidgetItem(ui->folderTree1);
treeRoot1->setIcon(0, QIcon(":/icons/black.png"));
treeRoot1->setText(0, tr("Root"));
treeRoot1->setExpanded(true);
addFoldersToTreeView(treeRoot1, ui->filePath1->text(), ui->filePath2->text());
ui->folderTree1->setUpdatesEnabled( true );
}
void MainWindow::addFoldersToTreeView(QTreeWidgetItem* currentWidget, QString leftPath, QString rightPath)
{
qDebug() << "MainWindow::addFoldersToTreeView" << leftPath;
QDir dir(leftPath);
QDir dir2(rightPath);
/* Add the folders */
foreach (QString subDir, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
{
QString sImageName = ":/icons/black.png";
QTreeWidgetItem* newItem = new QTreeWidgetItem(currentWidget);
qDebug() << "MainWindow::addFoldersToTreeView.sImageName" << sImageName;
newItem->setIcon(0, QIcon(sImageName));
newItem->setText(0, subDir);
newItem->setExpanded(true);
newItem->setData(0, 1, QVariant(leftPath + QDir::separator() + subDir));
/* Recursively add sub-folders */
addFoldersToTreeView(newItem, leftPath + QDir::separator() + subDir, rightPath + QDir::separator() + subDir);
}
Run Code Online (Sandbox Code Playgroud)
问题是这条线:
newItem->setData(0, 1, QVariant(leftPath + QDir::separator() + subDir));
Run Code Online (Sandbox Code Playgroud)
第二个参数是项数据角色,您指定为1(Qt :: DecorationRole).Qt :: DecorationRole应该用于以图标形式呈现为装饰的数据,即,此行将导致您之前指定的图标被替换为QVariant
对象.
删除该行或将项目数据角色更改为其他内容.