gpt4 book ai didi

c++ - 如何在鼠标单击时获取 QTreeWidget 中当前选定项的绝对路径

转载 作者:搜寻专家 更新时间:2023-10-31 01:33:38 28 4
gpt4 key购买 nike

我有一个简单的 QTreeWidget 指向根目录:

#include <QTreeWidget>
#include <QStringList>
#include <QApplication>

int main(int argc, char **argv)
{
QApplication application(argc, argv);
QStringList fileNames{"TEST/branch", "trunk"};
QTreeWidget treeWidget;
treeWidget.setColumnCount(1);

for (const auto& filename : fileNames)
{
QTreeWidgetItem *parentTreeItem = new QTreeWidgetItem(&treeWidget);
parentTreeItem->setText(0, filename.split('/').first());
QStringList filenameParts = filename.split('/').mid(1);

for(const auto& filenamePart : filenameParts)
{
QTreeWidgetItem *treeItem = new QTreeWidgetItem();
treeItem->setText(0, filenamePart);
parentTreeItem->addChild(treeItem);
parentTreeItem = treeItem;
}
}

treeWidget.show();
return application.exec();
}

输出:

enter image description here

我上面选择的项目是/TEST/branches。如何获取当前选中项的绝对路径?

最佳答案

好吧,我不认为有一个内置函数可以做到这一点,但你可以自己编写一个函数,比如

QString treeItemToFullPath(QTreeWidgetItem* treeItem)
{
QString fullPath= treeItem->text(0);

while (treeItem->parent() != NULL)
{
fullPath= treeItem->parent()->text(0) + "/" + fullPath;
treeItem = treeItem->parent();
}
return fullPath;
}

编辑: 输入 treeItem 是要显示其路径的选定树项。如果您确定至少选择了一项,则可以通过

treeWidget.selectedItems().first();

另一种方法是使用工具提示。您可以为每个项目添加提示,同时将它们添加到树中,但您可以在将它们添加到最终位置后执行此操作。

改变这个

for(const auto& filenamePart : filenameParts) 
{
QTreeWidgetItem *treeItem = new QTreeWidgetItem();
treeItem->setText(0, filenamePart);
parentTreeItem->addChild(treeItem);
parentTreeItem = treeItem;
}

这样

for(const auto& filenamePart : filenameParts) 
{
QTreeWidgetItem *treeItem = new QTreeWidgetItem();
treeItem->setText(0, filenamePart);
parentTreeItem->addChild(treeItem);
parentTreeItem = treeItem;
treeItem->setToolTip(0, treeItemToFullPath(treeItem));
}

这样,只要将鼠标悬停在项目上,您就会看到完整路径。

关于c++ - 如何在鼠标单击时获取 QTreeWidget 中当前选定项的绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41037995/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com