2009-12-28 11 views
8

: Bu iyi çalışırQTreeView kullanarak seçilen öğeler hakkında nasıl detay alınır? Böyle QDirModel ile QTreeView kullanıyorum

QDirModel * model = new QDirModel; 
ui->treeView->setModel(model); 
ui->treeView->setSelectionMode(QTreeView::ExtendedSelection); 
ui->treeView->setSelectionBehavior(QTreeView::SelectRows); 

Ancak, ben seçmek dosyaları hakkında bilgi almak için nasıl emin değilim. Ben şimdiye kadar bu var:

QModelIndexList list = ui->treeView->selectionModel()->selectedIndexes(); 

Ama emin şimdi ne yapacağını, ben her dosyanın adını ve tam yolunu almak istiyorum. Bir örnek gerçekten harika olurdu. Teşekkür ederim.

cevap

8

size verilen modeli endeksi nesne için dosya bilgilerini almak için QDirModel arasında fileInfo yöntemi kullanabilirsiniz, böyle Tavsiyen: Bu yardımcı olur

QModelIndexList list = ui->treeView->selectionModel()->selectedIndexes(); 
QDirModel* model = (QDirModel*)ui->treeView->model(); 
int row = -1; 
foreach (QModelIndex index, list) 
{ 
    if (index.row()!=row && index.column()==0) 
    { 
     QFileInfo fileInfo = model->fileInfo(index); 
     qDebug() << fileInfo.fileName() << '\n'; 
     row = index.row(); 
    } 
} 

umut,

+2

Sadece beni alt ilişkin ... Küçük bir ayrıntı: Seçim bir seferde satırlar olarak ayarlandığından, seçim listesini, seçilen dizinin tümü yerine, her satırın ilk sütununun model dizininin bir listesi olarak alabilirsiniz. Http://doc.trolltech.com/4.5/qitemselectionmodel.html#selectedRows –

+0

adresindeki selectedRows() işlevine bakın, teşekkürler! – Keiji