从QListWidget获取完整路径

时间:2015-12-15 06:19:27

标签: c++ qt qlistwidget

我有2个listwidgets,让我们称之为listwidgetinput和listwidgetoutput。我在listwidgetinput上有很多文件(只有文件名)。我在将文件名添加到listwidgetinput之前修剪文件名,如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);
&#13;
&#13;
&#13;

我转移文件后,我可以获取所有文件的路径吗?如果是,怎么做?

编辑:整个路径可用的代码。

&#13;
&#13;
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);
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:4)

使用QListWidgetItem::setData()传递额外的&#34;隐形&#34;属性,如创建项目时的完整路径:

auto item = new QListWidgetItem;
item->setText(fileInfo.fileName());
item->setData(Qt::UserRole, fileInfo.absoluteFilePath());
...

稍后您可以通过QListWidgetItem::data()检索它:

const auto fullPath = item->data(Qt::UserRole).toString();