#include "filebrowserwidget.h" #include #include #include FileBrowserWidget::FileBrowserWidget(QWidget *parent) : QWidget(parent) { setupUi(); connectSignals(); // 默认浏览当前工作目录 setRootPath(QDir::currentPath()); } void FileBrowserWidget::setupUi() { m_model = new QFileSystemModel(this); m_model->setRootPath(QString()); // 稍后在 setRootPath 里设置 m_view = new QTreeView(this); m_view->setModel(m_model); m_view->setHeaderHidden(true); m_view->setAnimated(true); auto *layout = new QVBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); layout->addWidget(m_view); setLayout(layout); } void FileBrowserWidget::connectSignals() { connect(m_view, &QTreeView::doubleClicked, this, [this](const QModelIndex &index) { if (!m_model) return; QString path = m_model->filePath(index); if (QFileInfo(path).isFile()) emit fileOpenRequested(path); }); } void FileBrowserWidget::setRootPath(const QString &path) { if (!m_model) return; QModelIndex idx = m_model->setRootPath(path); m_view->setRootIndex(idx); }