2009-12-28 9 views
8

Tôi đang sử dụng QTreeView với QDirModel như thế này:Làm cách nào để biết chi tiết về các mục đã chọn bằng QTreeView?

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

này hoạt động tốt, tuy nhiên, tôi không chắc chắn làm thế nào để có được các thông tin chi tiết về các tập tin mà tôi chọn. Tôi đã có điều này cho đến nay:

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

Nhưng không biết phải làm gì bây giờ, tôi muốn nhận được tên và đường dẫn đầy đủ của từng tệp. Một ví dụ sẽ thực sự tuyệt vời. Cảm ơn bạn.

Trả lời

8

bạn có thể sử dụng phương pháp fileInfo của QDirModel để có được thông tin chi tiết tập tin cho các đối tượng mô hình chỉ số nhất định, SMTH như thế này:

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

hy vọng điều này giúp, coi

+2

Chỉ cần đánh bại tôi vào nó ... Một chi tiết nhỏ: vì lựa chọn được đặt thành các hàng tại một thời điểm, bạn có thể nhận danh sách lựa chọn dưới dạng danh sách chỉ mục mô hình của cột đầu tiên của mỗi hàng, thay vì tất cả các chỉ mục đã chọn. Xem hàm selectedRows() tại http://doc.trolltech.com/4.5/qitemselectionmodel.html#selectedRows –

+0

Cảm ơn các bạn! – Keiji