2009-12-28 5 views
8

J'utilise QTreeView avec QDirModel comme ceci:Comment obtenir des détails sur les éléments sélectionnés en utilisant QTreeView?

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

Toutefois, cela fonctionne très bien, je ne sais pas comment obtenir les détails sur les fichiers que je sélectionne. J'ai ce jusqu'à présent:

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

Mais pas sûr de ce qu'il faut faire maintenant, j'aimerais obtenir le nom et le chemin complet de chaque fichier. Un exemple serait vraiment génial. Je vous remercie.

Répondre

8

vous pouvez utiliser la méthode fileInfo du QDirModel pour obtenir les détails du fichier pour l'objet d'index de modèle donné, SMTH comme ceci:

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

espérons que cette aide, ce qui est

+2

m'a battu Juste pour ça ... Un petit détail: puisque la sélection est définie comme étant des lignes à la fois, vous pouvez obtenir la liste de sélection sous la forme d'une liste de l'index du modèle de la première colonne de chaque ligne, au lieu de tous les index sélectionnés. Voir la fonction selectedRows() à http://doc.trolltech.com/4.5/qitemselectionmodel.html#selectedRows –

+0

Merci, les gars! – Keiji

Questions connexes