#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFileSystemModel>
#include <QItemSelectionModel>
#include <QSortFilterProxyModel>
#include <QtDebug>
namespace Ui {
class MainWindow;
}
{
Q_OBJECT
public:
explicit MainWindow
(QWidget *parent
= 0);
~MainWindow();
private slots:
private:
Ui::MainWindow *ui;
// directory Tree View
QFileSystemModel *QFSMdirectoryView;
// filename List View
QFileSystemModel *QFSMfilenameView;
};
#endif // MAINWINDOW_H
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFileSystemModel>
#include <QItemSelectionModel>
#include <QSortFilterProxyModel>
#include <QtDebug>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void filenameSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
void directorySelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
private:
Ui::MainWindow *ui;
// directory Tree View
QFileSystemModel *QFSMdirectoryView;
QItemSelectionModel *directorySelectionModel;
QSortFilterProxyModel *directorySortFilterModel;
// filename List View
QFileSystemModel *QFSMfilenameView;
QItemSelectionModel *filenameSelectionModel;
QSortFilterProxyModel *filenameSortFilterModel;
};
#endif // MAINWINDOW_H
To copy to clipboard, switch view to plain text mode
#include "MainWindow.h"
#include "ui_MainWindow.h"
MainWindow
::MainWindow(QWidget *parent
) : ui(new Ui::MainWindow)
{
ui->setupUi(this);
// directory Tree View
QFSMdirectoryView = new QFileSystemModel(this);
QFSMdirectoryView
->setFilter
(QDir::Dirs |
QDir::NoDotAndDotDot);
directorySortFilterModel->setSourceModel(QFSMdirectoryView);
directorySortFilterModel->sort(0, Qt::AscendingOrder);
ui->directoryTreeView->setModel(directorySortFilterModel);
ui->directoryTreeView->setSortingEnabled(true);
ui->directoryTreeView->setColumnHidden(1, true);
ui->directoryTreeView->setColumnHidden(2, true);
ui->directoryTreeView->setColumnHidden(3, true);
ui->directoryTreeView->setSelectionModel(directorySelectionModel);
connect(directorySelectionModel,
SIGNAL(selectionChanged
(const QItemSelection
&,
const QItemSelection
&)),
this,
SLOT(directorySelectionChanged
(QItemSelection,
QItemSelection)));
QFSMdirectoryView->setRootPath(qsPath);
// filename List View
QFSMfilenameView = new QFileSystemModel(this);
QFSMfilenameView
->setFilter
(QDir::Files |
QDir::NoDotAndDotDot);
filenameSortFilterModel->setSourceModel(QFSMfilenameView);
filenameSortFilterModel->sort(0, Qt::AscendingOrder);
ui->filenameListView->setModel(filenameSortFilterModel);
ui->filenameListView->setSelectionModel(filenameSelectionModel);
connect(filenameSelectionModel,
SIGNAL(selectionChanged
(const QItemSelection
&,
const QItemSelection
&)),
this,
SLOT(filenameSelectionChanged
(QItemSelection,
QItemSelection)));
}
MainWindow::~MainWindow()
{
delete ui;
}
{
QString qsPath
= QFSMfilenameView
->filePath
(selected.
indexes()[0]);
qDebug() << "Selected filename: " << qsPath;
}
{
QString qsPath
= directorySortFilterModel
->data
(selected.
indexes()[0], QFileSystemModel
::FilePathRole).
toString();
// Obviously this no longer works with the proxy ...
// QModelIndex index = QFSMfilenameView->setRootPath(qsPath);
// ui->filenameListView->setRootIndex(index);
}
#include "MainWindow.h"
#include "ui_MainWindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QString qsPath = QDir::currentPath();
// directory Tree View
QFSMdirectoryView = new QFileSystemModel(this);
QFSMdirectoryView->setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
directorySortFilterModel = new QSortFilterProxyModel(this);
directorySortFilterModel->setSourceModel(QFSMdirectoryView);
directorySortFilterModel->sort(0, Qt::AscendingOrder);
ui->directoryTreeView->setModel(directorySortFilterModel);
ui->directoryTreeView->setSortingEnabled(true);
ui->directoryTreeView->setColumnHidden(1, true);
ui->directoryTreeView->setColumnHidden(2, true);
ui->directoryTreeView->setColumnHidden(3, true);
directorySelectionModel = new QItemSelectionModel(directorySortFilterModel);
ui->directoryTreeView->setSelectionModel(directorySelectionModel);
connect(directorySelectionModel, SIGNAL(selectionChanged (const QItemSelection&, const QItemSelection&)), this, SLOT(directorySelectionChanged(QItemSelection,QItemSelection)));
QFSMdirectoryView->setRootPath(qsPath);
// filename List View
QFSMfilenameView = new QFileSystemModel(this);
QFSMfilenameView->setFilter(QDir::Files | QDir::NoDotAndDotDot);
filenameSortFilterModel = new QSortFilterProxyModel(this);
filenameSortFilterModel->setSourceModel(QFSMfilenameView);
filenameSortFilterModel->sort(0, Qt::AscendingOrder);
ui->filenameListView->setModel(filenameSortFilterModel);
filenameSelectionModel = new QItemSelectionModel(filenameSortFilterModel);
ui->filenameListView->setSelectionModel(filenameSelectionModel);
connect(filenameSelectionModel, SIGNAL(selectionChanged (const QItemSelection&, const QItemSelection&)), this, SLOT(filenameSelectionChanged(QItemSelection,QItemSelection)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::filenameSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
{
QString qsPath = QFSMfilenameView->filePath(selected.indexes()[0]);
qDebug() << "Selected filename: " << qsPath;
}
void MainWindow::directorySelectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
{
QString qsPath = directorySortFilterModel->data(selected.indexes()[0], QFileSystemModel::FilePathRole).toString();
// Obviously this no longer works with the proxy ...
// QModelIndex index = QFSMfilenameView->setRootPath(qsPath);
// ui->filenameListView->setRootIndex(index);
}
To copy to clipboard, switch view to plain text mode
-Enjoy
Bookmarks