QFileSystemModel

fileModel= new QFileSystemModel(this);
fileModel->setRootPath(QDir::currentPath());

QFileSystemModel提供的接口函数可以创建目录、删除目录、重命名目录,可以获得文件名称、目录名称、文件大小等参数,还可以获得文件的详细信息。
在使用QFileSystemModel获取文件名称、文件大小、文件类型以及文件路径时,出现一个错误导致程序不能运行。如下图的报错信息:
在这里插入图片描述
解决:就是全局定义的问题,不应该在局部函数里面定义全局的变量,然后局部使用。
mainwindow.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QFileSystemModel>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT
private:
    QFileSystemModel *fileModel=NULL;//全局定义,设置为空。
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private slots:
    void on_treeView_clicked(const QModelIndex &index);

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include  <QDir>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    fileModel= new QFileSystemModel(this);//key:QFileSystemModel提供的接口函数
    fileModel->setRootPath(QDir::currentPath());//可以创建目录、删除目录、重命名目录,可以获得文件名称、目录名称、文件大小等参数,还可以获得文件的详细信息
    ui->treeView->setModel(fileModel);
    ui->listView->setModel(fileModel);
    ui->tableView->setModel(fileModel);
    ui->tableView->verticalHeader()->setVisible(false);
   connect(ui->treeView,SIGNAL(clicked(QModelIndex)),ui->listView,SLOT(setRootIndex(QModelIndex)));
   connect(ui->treeView,SIGNAL(clicked(QModelIndex)),ui->tableView,SLOT(setRootIndex(QModelIndex)));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_treeView_clicked(const QModelIndex &index)
{
    ui->labName->setText(fileModel->fileName(index));
    //qDebug()<<__func__<<fileModel->fileName(index)<<index.row();
    ui->labPath->setText(fileModel->filePath(index));//显示路径出错误????添加程序整个报错卡死
    ui->labType->setText(fileModel->type(index));
    unsigned sz=fileModel->size(index)/1024;
    if(sz<1024)
        ui->labSize->setText(QString::asprintf("%d KB",sz));
    else
        ui->labSize->setText(QString::asprintf("%->2f MB",(float)sz/1024));//设置输出小数点位数
    ui->checkBox->setChecked(fileModel->isDir(index));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值