获取已安装的应用程序数据问题

问题描述:

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

假设你正在使用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