问题交流请联系-》群名:IT项目交流群 群号:245022761
设计目标
QListWidget设计一个软件显示目录下的文件属性
用QFileInfo拿文件属性,
目录可以用QDir中的获取文件信息,文件名称
实现过程
设计自定义窗口如下,由3个QLabel组成,分别显示图片、名称、大小
设置自定义组件添加内容接口
void itemform::set_info(QString pic, QString name, qint64 filesize)
{
QPixmap pixmap(pic);
ui->label_icon->setPixmap(pixmap);
//ui->->setText(info);
ui->label_name->setText(name);
QString str = QString("%1").arg(filesize);
ui->label_size->setText(str);
}
自定义窗口添加到QListWidget组件中
itemform *form = new itemform();
form->set_info(":/dir.png", info.fileName(),info.size());
QListWidgetItem *item = new QListWidgetItem();
//设置Item的尺寸与form一致
item->setSizeHint(form->sizeHint());
ui->listWidget->addItem(item);
ui->listWidget->setItemWidget(item,form);
实现效果
关键代码
#include "fileattributeswin.h"
#include "itemform.h"
#include "ui_fileattributeswin.h"
#include <QFileDialog>
#include <QDir>
FileAttributesWin::FileAttributesWin(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::FileAttributesWin)
{
ui->setupUi(this);
}
FileAttributesWin::~FileAttributesWin()
{
delete ui;
}
void FileAttributesWin::on_openDirBt_clicked()
{
ui->listWidget->clear();
//QString filter = "Text files (*.txt *.cpp *.c *.h)";
QString filepath = QFileDialog::
getExistingDirectory(this,"选择文件","./");
ui->Edit_show->setText(filepath);
QDir d(filepath);
QFileInfoList list = d.entryInfoList();
for(int i=0; i<list.size(); i++)
{
QFileInfo info = list.at(i);
if(info.fileName()=="." || info.fileName()==".." )
{
i++;
continue;
}
if(info.isDir())
{
info.size();//文件大小
info.fileName();//文件名
itemform *form = new itemform();
form->set_info(":/dir.png", info.fileName(),info.size());
QListWidgetItem *item = new QListWidgetItem();
//设置Item的尺寸与form一致
item->setSizeHint(form->sizeHint());
ui->listWidget->addItem(item);
ui->listWidget->setItemWidget(item,form);
}
if(info.isFile())
{
info.size();//文件大小
info.fileName();//文件名
itemform *form = new itemform();
form->set_info(":/file.png", info.fileName(),info.size());
QListWidgetItem *item = new QListWidgetItem();
//设置Item的尺寸与form一致
item->setSizeHint(form->sizeHint());
ui->listWidget->addItem(item);
ui->listWidget->setItemWidget(item,form);
}
}
}