1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| #include <QApplication> #include <QWidget> #include <QTreeView> #include <QFileSystemModel> #include <QVBoxLayout> #include <QLabel> #include <QHeaderView>
void setupTreeViewDemo(QWidget *parent) { QVBoxLayout *layout = new QVBoxLayout(parent);
QFileSystemModel *model = new QFileSystemModel(parent); model->setRootPath(QDir::currentPath());
QTreeView *treeView = new QTreeView(parent); treeView->setModel(model);
treeView->setRootIndex(model->index(QDir::currentPath()));
treeView->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
treeView->setSortingEnabled(true); treeView->sortByColumn(0, Qt::AscendingOrder);
QObject::connect(treeView, &QTreeView::doubleClicked, [model](const QModelIndex &index) { if (model->fileInfo(index).isFile()) { qDebug() << "你双击了一个文件:" << model->filePath(index); } else { qDebug() << "你双击了一个目录:" << model->fileName(index); } });
layout->addWidget(new QLabel("QTreeView - 实时文件系统预览:")); layout->addWidget(treeView); }
int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w; w.setWindowTitle("QTreeView 系统浏览器"); w.resize(600, 400); setupTreeViewDemo(&w); w.show(); return a.exec(); }
|