【问题标题】:Get installed apps data issue获取已安装的应用程序数据问题
【发布时间】:2017-05-31 16:23:23
【问题描述】:
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);
}

我想在适当的列中显示所有应用数据。

图片:

我也尝试在没有向量的情况下完成它:

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

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

【问题讨论】:

  • 那么不要创建vector.count()QTreeWidgetItems。以错字结尾。
  • @LogicStuff 我已经更改了主帖。谢谢。如果不使用vector.count() 那么如何迭代向量?
  • @Cobra91151 回答您的评论问题:您可以使用 QVectorIterator (doc.qt.io/qt-5/qvectoriterator.html#QVectorIterator)。至于最初的问题,你能具体说明parent是什么,it returns but not all (only 5)是什么意思吗?
  • @lpares12 主帖已更新。我的意思是 12 中只有 5 件。
  • @Cobra91151 你想在列还是行中显示向量值?

标签: c++ qt windows-applications qvector


【解决方案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列?这只是一个小测试示例。但是,我想要的是从注册表中获取所有应用程序数据,并将数据写入QTreeWidgetItemQTreeWidget),所以我决定使用QVector,因为我无法在右列中维护正确的数据.你能帮我解决吗?
  • 我已经更新了主帖。我想在所有 5 列中使用矢量在我的主要帖子中显示图像中的数据。谢谢。
  • @Cobra91151 我看不到图像。修改矢量不会改变树的显示。相反,您可以将所有newItem 保存到vector 并直接修改它们,或者您可以执行std::map&lt;std::string, QTreeWidgetItem&gt; 并且每次修改字符串时应用QTreeWidgetItem::setText(string)
  • 图片链接 - image。我想在图像中显示应用程序数据,如带有矢量或不带矢量但在适当的列中。 5 列 1 - 名称(+ 图标)2 - 版本 3 - 发布者 4 - 安装位置 5 - 卸载位置 提前致谢。
  • 您应该关闭此问题并在更新时再提出一个问题,因为与您现在提出的问题相比,您的原始问题发生了很大变化。
猜你喜欢
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-04
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
相关资源
最近更新 更多