Merci de la réponse, je suis tombé sur la vidéo de VoidRealms mais je suis face à un problème.
A un moment il utilise cette ligne :
ui->treeWidget->setModel(filemodel);
Le problème est que setModel est un attribut privé de QTreeWidget et je ne vois pas quoi utiliser à la place.
Voici le code complet:
dialog.cpp
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
|
#include "dialog.h"
#include "ui_dialog.h"
#include <QDir>
#include <QModelIndex>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog),
dirmodel(new QFileSystemModel(this)),
filemodel(new QFileSystemModel(this))
{
ui->setupUi(this);
QString sPath = "C:/";
dirmodel = new QFileSystemModel(this);
dirmodel->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs);
dirmodel->setRootPath(sPath);
ui->treeView->setModel(dirmodel);
filemodel = new QFileSystemModel(this);
filemodel->setFilter(QDir::NoDotAndDotDot | QDir::Files);
filemodel->setRootPath(sPath);
ui->treeWidget->setModel(filemodel);
}
Dialog::~Dialog()
{
delete dirmodel;
delete filemodel;
delete ui;
}
void Dialog::on_treeView_clicked(const QModelIndex &index)
{
QString sPath = dirmodel->fileInfo(index).absoluteFilePath();
ui->treeView->setRootIndex(filemodel->setRootPath(sPath));
} |
dialog.h
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
|
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QtCore>
#include <QtGui>
#include <QFileSystemModel>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = nullptr);
~Dialog();
private slots:
void on_treeView_clicked(const QModelIndex &index);
private:
Ui::Dialog *ui;
QFileSystemModel *dirmodel;
QFileSystemModel *filemodel;
};
#endif // DIALOG_H |
Partager