2013-02-20 64 views
3

我有一個QTreeWidgetQTreeWidgetItem項目,但只有根節點顯示出它的圖標:我的QTreeWidgetIcons在哪裏?

enter image description here

我一直在抓我的頭什麼可以把它關掉,任何提示?

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); 
    } 

回答

6

的問題是該行:

newItem->setData(0, 1, QVariant(leftPath + QDir::separator() + subDir)); 

第二個參數是項目數據的作用,其中指定爲1(QT :: DecorationRole)。 Qt :: DecorationRole應該用於以圖標形式呈現爲裝飾的數據,即此行將使您之前指定的圖標替換爲QVariant對象。

刪除該行或將項目數據角色更改爲其他項目。