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

时间:2017-05-31 16:23:23

标签: c++ qt windows-applications qvector

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

但它不起作用,应用程序崩溃。

1 个答案:

答案 0 :(得分:-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的名称更改为更具体的名称。