#include "mainwindow.h" #include "ui_mainwindow.h" #include "statusbarwidget.h" #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) , m_fsmodel(new QFileSystemModel) { ui->setupUi(this); ui->cdUpButton->setIcon(qApp->style()->standardIcon(QStyle::SP_FileDialogToParent)); m_fsmodel->setRootPath(""); ui->columnView->setModel(m_fsmodel); ui->listView->setModel(m_fsmodel); ui->treeView->setModel(m_fsmodel); ui->treeTable->setModel(m_fsmodel); ui->treeTable->setItemsExpandable(false); ui->treeTable->setRootIsDecorated(false); ui->treeView->hideColumn(1); ui->treeView->hideColumn(2); ui->treeView->hideColumn(3); StatusbarWidget * sb = new StatusbarWidget(); ui->statusbar->addPermanentWidget(sb); connect(sb, &StatusbarWidget::requestMode, this, [this](int mode){ ui->stackedWidget->setCurrentIndex(mode); }); connect(ui->listView, &QAbstractItemView::doubleClicked, this, &MainWindow::viewGotoModelIndex); connect(ui->treeTable, &QAbstractItemView::doubleClicked, this, &MainWindow::viewGotoModelIndex); connect(ui->columnView, &QAbstractItemView::clicked, this, &MainWindow::viewGotoModelIndex); } MainWindow::~MainWindow() { delete ui; } void MainWindow::viewGotoModelIndex(const QModelIndex &index) { if (!m_fsmodel->isDir(index)) { return; } ui->listView->setRootIndex(index); ui->treeTable->setRootIndex(index); QItemSelectionModel::SelectionFlags flags = QItemSelectionModel::Current; // if (columnClicked->selectionModel()->isSelected(index)) // flags |= QItemSelectionModel::Select; ui->columnView->selectionModel()->setCurrentIndex(index, flags); } void MainWindow::on_treeView_clicked(const QModelIndex &index) { if (!m_fsmodel->isDir(index)) { return; } ui->listView->setRootIndex(index); ui->treeTable->setRootIndex(index); ui->columnView->setRootIndex(index); } void MainWindow::on_cdUpButton_clicked() { const QModelIndex &idx = ui->listView->rootIndex(); if (!idx.parent().isValid()) { return; } viewGotoModelIndex(idx.parent()); }