C++ 获取安装的应用程序数据问题 struct-AppsData{ QList图标; QStringList名称; 英文版; QStringList出版社; QStringList安装位置; QStringList位置; }; 无效测试::setAppData(QList图标、QStringList名称、QStringList版本、QStringList发布者、QStringList安装位置、QStringList卸载位置) { AppsData AppsData; appsData.icons=图标; appsData.name=名称; appsData.version=版本; appsData.publisher=出版商; appsData.installLocation=安装位置; appsData.uninstallLocation=卸载位置; QVector
我还尝试在没有矢量的情况下实现它:C++ 获取安装的应用程序数据问题 struct-AppsData{ QList图标; QStringList名称; 英文版; QStringList出版社; QStringList安装位置; QStringList位置; }; 无效测试::setAppData(QList图标、QStringList名称、QStringList版本、QStringList发布者、QStringList安装位置、QStringList卸载位置) { AppsData AppsData; appsData.icons=图标; appsData.name=名称; appsData.version=版本; appsData.publisher=出版商; appsData.installLocation=安装位置; appsData.uninstallLocation=卸载位置; QVector,c++,qt,windows-applications,qvector,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&g
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;isetText(0,names.at(i));
所有应用程序项->setText(1,versions.at(i));
所有应用程序项->setText(2,publisher.at(i));
所有应用程序项->setText(3,installLocations.at(i));
所有应用程序项->设置文本(4,卸载位置,位于(i));
}
但它不工作,应用程序崩溃。假设您使用的是Qt5: 一旦创建了
QTreeWidget
和向量,就应该迭代它的元素,并为每个元素创建一个新的QTreeWidgetItem
,这样您就可以得到如下结果:
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));
}
QTreeWidget*treeWidget=新的QTreeWidget(此);
treeWidget->setCoulmnCount(1);
对于(int i=0;isetText(0,vector.value(i));//0将其显示在第0列
}
如您所见,首先需要创建QTreeWidget
,然后将每个子项添加为QTreeWidgetItem
顺便说一下,你应该考虑将变量的名称<代码>矢量< /代码>改为更具体的。< /P>不要创建<代码> vector .CONTUTE()/代码>代码> qTreWistGeTime< <代码> s。那么如何在vector上迭代?@Cobra91151回答您的评论问题:您可以使用QVectorIterator()。对于原始问题,您能否指定什么是
parent
,以及返回但不是全部(仅5个)是什么意思
?@lpares12主帖子已经更新。我的意思是12中只有5项。@Cobra91151,您想在列或行中显示向量值吗?但向量数据在0列中?这只是一个小测试示例。但是,我想从注册表中获取所有应用程序数据,并将数据写入qtreewigetItem
(QTreeWidget
),所以我决定使用QVector
,因为我无法在正确的列中维护正确的数据。你能帮我吗?我已经更新了主帖子。我想在所有5列中使用vector显示主帖子中图像中的数据。谢谢。@Cobra91151我看不到图像。修改向量不会改变树显示。相反,你可以ld将所有newItem
保存到向量中,并直接修改它们,或者您可以执行std::map
操作,每次修改字符串时,应用qtreewigetitem::setText(字符串)
。图像链接-。我想显示应用程序数据,如图像中有矢量或没有矢量,但在适当的列中。5列1-名称(+图标)2-版本3-发布者4-安装位置5-卸载位置提前感谢。您应该关闭此问题,并在更新时提出另一个问题,因为与您现在提出的问题相比,您原来的问题发生了很大变化。
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
}