
先看效果代码如下ExplorerWindow.h#pragma once #include QMainWindow #include QSplitter #include QTreeView #include QTableView #include QFileSystemModel class ExplorerWindow : public QMainWindow { public: ExplorerWindow(QWidget *parent nullptr); ~ExplorerWindow(); private: void initUi(); void createTreeView(); void createTableView(); void buildConnection(); private: QSplitter *m_splitter {nullptr}; QTreeView *m_treeView {nullptr}; QTableView *m_tableView {nullptr}; QFileSystemModel *m_model {nullptr}; };ExplorerWindow.cpp#include ExplorerWindow.h #include QHeaderView #include QDir ExplorerWindow::ExplorerWindow(QWidget *parent) : QMainWindow(parent) { initUi(); buildConnection(); } ExplorerWindow::~ExplorerWindow() { } void ExplorerWindow::initUi() { setWindowTitle(QStringLiteral(文件浏览器)); resize(1000, 600); m_splitter new QSplitter(this); m_model new QFileSystemModel(this); m_model-setRootPath(QString()); createTreeView(); createTableView(); m_splitter-setStretchFactor(0, 1); m_splitter-setStretchFactor(1, 3); setCentralWidget(m_splitter); } void ExplorerWindow::createTreeView() { m_treeView new QTreeView(m_splitter); m_treeView-setModel(m_model); m_treeView-setRootIndex(m_model-index(QString())); m_treeView-setColumnWidth(0, 235); m_treeView-hideColumn(1); m_treeView-hideColumn(2); m_treeView-hideColumn(3); //m_treeView-header()-setStretchLastSection(true); m_treeView-setHeaderHidden(true); // m_treeView-setStyleSheet(R( // QTreeView { // background-color: white; // border: 1px solid #d0d0d0; // selection-background-color: #3399ff; // selection-color: white; // } // QTreeView::item { // padding: 5px; // } // QTreeView::item:hover { // background-color: #f0f7ff; // } // QTreeView::item:selected { // background-color: #3399ff; // color: white; // } // )); } void ExplorerWindow::createTableView() { m_tableView new QTableView(m_splitter); m_tableView-setModel(m_model); m_tableView-setRootIndex(m_model-index(QDir::homePath())); m_tableView-setSelectionBehavior(QAbstractItemView::SelectRows); m_tableView-setEditTriggers(QAbstractItemView::NoEditTriggers); m_tableView-setSortingEnabled(true); m_tableView-horizontalHeader()-setStretchLastSection(true); //m_tableView-verticalHeader()-setDefaultSectionSize(20); //m_tableView-verticalHeader()-setDefaultAlignment(Qt::AlignRight | Qt::AlignVCenter); m_tableView-verticalHeader()-hide(); int cnt m_tableView-horizontalHeader()-count(); if (cnt 0) m_tableView-setColumnWidth(0, 360); if (cnt 1) m_tableView-setColumnWidth(1, 100); if (cnt 2) m_tableView-setColumnWidth(2, 100); m_tableView-setStyleSheet(R( TableView { background: #f8fafc; alternate-background-color: #eef3f8; border: 1px solid #cfd8e3; border-radius: 6px; gridline-color: #d9e2ec; color: #1f2933; font-size: 14px; selection-background-color: #4a90e2; selection-color: white; outline: 0; } QTableView::item { padding: 2px 2px; border: none; } QTableView::item:hover { background: #e6f2ff; } QTableView::item:selected { background: #4a90e2; color: white; } QHeaderView::section { background: #e9eef5; color: #334155; padding: 4px; border: none; border-right: 1px solid #d0d7e2; border-bottom: 1px solid #cbd5e1; font-weight: 600; })); } void ExplorerWindow::buildConnection() { connect(m_treeView, QTreeView::clicked, this, [this](const QModelIndex index) { if (m_model-isDir(index)) { m_tableView-setRootIndex(index); } }); }main.cpp#include QApplication #include ExplorerWindow.h int main(int argc, char *argv[]) { QApplication app(argc, argv); ExplorerWindow window; window.show(); return app.exec(); }