2017-05-31 99 views
-3
struct AppsData { 
    QList<QIcon> icons; 
    QStringList name; 
    QStringList version; 
    QStringList publisher; 
    QStringList installLocation; 
    QStringList uninstallLocation; 
}; 

void Test::setAppData(QList<QIcon> icons, QStringList names, QStringList versions, QStringList publishers, QStringList installLocations, QStringList uninstallLocations) 
{ 
    AppsData appsData; 
    appsData.icons = icons; 
    appsData.name = names; 
    appsData.version = versions; 
    appsData.publisher = publishers; 
    appsData.installLocation = installLocations; 
    appsData.uninstallLocation = uninstallLocations; 

    QVector<AppsData> dataVector; 
    dataVector.push_back(appsData); 
} 

我想在適當的列中顯示所有應用程序數據。獲取已安裝的應用程序數據問題

圖片: enter image description here

而且我試圖完成它無載體:

for (int i = 0; i < uninstallLocations.count(); i++) { 
     allApplicationsItem = new QTreeWidgetItem(allApplications); 
     allApplicationsItem->setText(0, names.at(i)); 
     allApplicationsItem->setText(1, versions.at(i)); 
     allApplicationsItem->setText(2, publishers.at(i)); 
     allApplicationsItem->setText(3, installLocations.at(i)); 
     allApplicationsItem->setText(4, uninstallLocations.at(i)); 
    } 

,但它不工作,該應用程序崩潰。

+0

然後不要創建'vector.count()''QTreeWidgetItem's。結束爲錯字。 – LogicStuff

+0

@LogicStuff 我改變了主要帖子。謝謝。如果不使用'vector.count()',那麼如何迭代vector? – Cobra91151

+0

@ Cobra91151回答你的評論問題:你可以使用QVectorIterator(http://doc.qt.io/qt-5/qvectoriterator.html#QVectorIterator)。至於原始問題,你可以指定什麼'父母',你是什麼意思,它返回,但不是全部(只有5)'? – lpares12

回答

-1

假設你正在使用QT5:

一旦你有一個QTreeWidget和創建的,你應該迭代它的元素,併爲每個人創造一個新的QTreeWidgetItem,所以你必須像載體:

QTreeWidget *treeWidget = new QTreeWidget(this); 
treeWidget->setCoulmnCount(1); 

for(int i = 0; i < vector.count(); i++) { 
    QTreeWidgetItem *newItem = new QTreeWidgetItem(treeWidget); 
    newItem->setText(0, vector.value(i)); // 0 to display it at column 0 
} 

如您所見,首先需要創建QTreeWidget,然後將每個孩子添加爲QTreeWidgetItem

順便說一下,您應該考慮將變量vector的名稱更改爲更具體的名稱。

+0

但矢量數據在0列? 這只是一個小例子。然而,我想要的是從註冊表中獲取所有應用程序數據,並將數據寫入'QTreeWidgetItem'('QTreeWidget'),所以我決定使用'QVector',因爲我無法在右列中維護正確的數據。你能幫我嗎? – Cobra91151

+0

我已更新主帖子。我想要在所有5列中使用矢量在我的主文章中顯示圖像。謝謝。 – Cobra91151

+0

@ Cobra91151我看不到圖像。修改矢量不會改變樹形顯示。相反,您可以將所有'newItem'保存到'vector'並直接修改它們,或者您可以執行'std :: map '並且每次修改字符串時,應用'QTreeWidgetItem: :的setText(串)'。 – lpares12

相關問題