从 QListWidget 获取完整路径
Getting full path from QListWidget
我有 2 个 listwidgets,我们称它们为 listwidgetinput 和 listwidgetoutput。我在 listwidgetinput 上有很多文件(只有文件名)。在将文件名添加到 listwidgetinput 之前,我 trim 像这样 it.fileName()
。我将所选文件传输到 listdigetoutput,如:
QList <QListWidgetItem*> items=ui->listWidgetinput->selectedItems();
for(int j=0;j<items.count();j++)
{
list= items.at(j)->text();
ui->listWidgetOutput->insertItem(j,list);
传输文件后,我可以获取所有文件的路径吗?。如果是,怎么做?
编辑:整个路径可用的代码。
QString Dir, Type;
QStringList Files;
Qlistwidget wid
if (index==0)
{
Dir.append(C:\desktop....);
type.append(".txt")
wid = ui->listwidgetinput_txt;
}
if (index ==1)
{
Dir.append(C:\desktop....);
type.append(".doc")
wid = ui->listwidgetinput_doc
}
QDirIterator it(Dir, QStringList() << Type, QDir::Files, QDirIterator::Subdirectories);
while (it.hasNext())
{
it.next();
Files.append(it.fileName());
}
wid->additems(Files);
使用 QListWidgetItem::setData() 传递额外的 "invisible" 属性,例如创建项目时的完整路径:
auto item = new QListWidgetItem;
item->setText(fileInfo.fileName());
item->setData(Qt::UserRole, fileInfo.absoluteFilePath());
...
稍后您可以通过QListWidgetItem::data()检索它:
const auto fullPath = item->data(Qt::UserRole).toString();
我有 2 个 listwidgets,我们称它们为 listwidgetinput 和 listwidgetoutput。我在 listwidgetinput 上有很多文件(只有文件名)。在将文件名添加到 listwidgetinput 之前,我 trim 像这样 it.fileName()
。我将所选文件传输到 listdigetoutput,如:
QList <QListWidgetItem*> items=ui->listWidgetinput->selectedItems();
for(int j=0;j<items.count();j++)
{
list= items.at(j)->text();
ui->listWidgetOutput->insertItem(j,list);
传输文件后,我可以获取所有文件的路径吗?。如果是,怎么做?
编辑:整个路径可用的代码。
QString Dir, Type;
QStringList Files;
Qlistwidget wid
if (index==0)
{
Dir.append(C:\desktop....);
type.append(".txt")
wid = ui->listwidgetinput_txt;
}
if (index ==1)
{
Dir.append(C:\desktop....);
type.append(".doc")
wid = ui->listwidgetinput_doc
}
QDirIterator it(Dir, QStringList() << Type, QDir::Files, QDirIterator::Subdirectories);
while (it.hasNext())
{
it.next();
Files.append(it.fileName());
}
wid->additems(Files);
使用 QListWidgetItem::setData() 传递额外的 "invisible" 属性,例如创建项目时的完整路径:
auto item = new QListWidgetItem;
item->setText(fileInfo.fileName());
item->setData(Qt::UserRole, fileInfo.absoluteFilePath());
...
稍后您可以通过QListWidgetItem::data()检索它:
const auto fullPath = item->data(Qt::UserRole).toString();