2015-12-15 5 views
1

У меня есть 2 listwidgets, позволяет называть их listwidgetinput и listwidgetoutput. У меня есть много файлов (только имя файла) в listwidgetinput. И я обрезаю имя файла, прежде чем добавлять его в listwidgetinput, как это it.fileName(). и я перенести выбранные файлы в listdigetoutput как:Получение полного пути от QListWidget

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

+0

Пожалуйста, добавьте немного больше трески e ... в частности фрагмент кода, в котором у вас все еще есть полный путь. – hyde

+0

Добавлено как и спросил. @hyde – user5603723

ответ

4

Использование QListWidgetItem::setData() передать дополнительные "невидимые" свойства, как полный путь при создании элемента:

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

Позже вы можете восстановить его с помощью QListWidgetItem::data():

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

Почему вы не можете изменить код вокруг 'wid-> additems (Files);'? Это чистая вещь пользовательского интерфейса, что с этим связано бэкэнд? –

+0

Я дал это попробовать, извините, я просто новичок. так вот как вы попросили меня сделать это? 'QDirIterator it (myDir, QStringList() << myType, QDir :: Files, QDirIterator :: Подкаталоги);
auto item = new QListWidgetItem;
while (it.hasNext()) {
it.next();
item-> setText (it.fileName());
item-> setData (Qt :: UserRole, it.filePath());
myWidget-> addItems (item); ' – user5603723

+0

По-видимому
не работает в комментариях – user5603723

 Смежные вопросы

  • Нет связанных вопросов^_^