【QT 网络云盘客户端】——实现文件属性窗口

目录

文件属性对话框

设置字体样式

获取文件的信息

显示文件属性对话框

当我们点击文件中的属性,则会弹出一个属性对话框:

实现过程:

0.设置 属性 菜单项的槽函数

1.鼠获取鼠标选中的QListWidgetItem,它包含 图标和文件名

2.根据文件名 找到对应的FileInfo对象

ps:FileInfo是文件信息对象,在显示文件列表的过程中,就已经将每个文件的 文件信息保存到 QList<FileInfo*> m_fileInfoList

3.将FileInfo对象 中的信息设置 进文件属性对话框中。

文件属性对话框

实现过程:

自定义一个filePropertyiInfoDialog类型,继承QDialog类型, 其中包括

filePropertyiInfoDialog.h, filePropertyiInfoDialog.cpp ,filePropertyiInfoDialog.ui文件

filePropertyiInfoDialog.ui界面设计:

设置字体样式

filePropertyiInfoDialog.cpp,在构造函数中设置字体的颜色:

cpp 复制代码
filePropertyiInfoDialog::filePropertyiInfoDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::filePropertyiInfoDialog)
{
    ui->setupUi(this);
    QString style1 = QString("color: rgb(11, 11, 11);font: 75 14pt \"Agency FB\";");
    QString style2 = QString("font: 14pt \"隶书\";color: rgb(255, 156, 16);");

    this->setWindowTitle("文件属性");
    ui->lbl_fileName->setStyleSheet(style1);
    ui->lbl_fileSize->setStyleSheet(style1);
    ui->lbl_download->setStyleSheet(style1);
    ui->lbl_shareStatus->setStyleSheet(style1);
    ui->lbl_uploadTime->setStyleSheet(style1);
    ui->lbl_uploadUser->setStyleSheet(style1);

    ui->val_fileName->setStyleSheet(style2);
    ui->val_fileSize->setStyleSheet(style2);
    ui->val_download->setStyleSheet(style2);
    ui->val_shareStatus->setStyleSheet(style2);
    ui->val_uploadTime->setStyleSheet(style2);
    ui->val_uploadUser->setStyleSheet(style2);

}

获取文件的信息

cpp 复制代码
    //设置属性菜单项的槽函数
    connect(m_propertyAction,&QAction::triggered,this,[=]{
        dealfile(DealFile::Show);
    });


void myfile::dealfile(DealFile cmd)
{
    //获取鼠标选中的QListWidgetItem
    QListWidgetItem* item=ui->listWidget->currentItem();

    for(int i=0;i<m_fileInfoList.length();i++)
    {
        //根据文件名找到对应的文件信息
        FileInfo* fileInfo=m_fileInfoList[i];
        if(fileInfo->fileName==item->text())
        {

           if(cmd==DealFile::Show)
            {
                //显示文件属性
                showFileProperty(fileInfo);
            }
        }
    }
}

显示文件属性对话框

cpp 复制代码
//fileinfo.h文件
struct FileInfo
{
    QString user;           //用户名
    QString md5;            //md5
    QString createTime;     //上传时间
    QString fileName;       //文件名称
    int shareStatus;        //共享状态, 0为没有共享, 1为共享
    int pv;                 //文件下载量,下载一次加1
    QString url;            //文件url
    int size;               //文件大小
    QString type;           //文件类型
};


//filePropertyiInfoDialog.cpp文件
//显示filePropertyiInfoDialog文件属性对话框
void myfile::showFileProperty(FileInfo *fileInfo)
{
    //弹出对话框,显示文件属性
    filePropertyiInfoDialog* dialog=new filePropertyiInfoDialog();
    dialog->setFileInfo(fileInfo);
    dialog->show();
}

//将fileInfo的信息设置到filePropertyiInfoDialog中
void filePropertyiInfoDialog::setFileInfo(FileInfo *fileInfo)
{
    //设置文件名称
    ui->val_fileName->setText(fileInfo->fileName);

    int size=fileInfo->size;
    QString fileSize;
    //设置文件大小
    if(size<1024){
          fileSize=QString("%1字节").arg(QString::number(size));
    }
    else if(size>=1024)
    {
         fileSize=QString("%1 kb").arg(QString::number(size/1024));
    }
    else if(size>=1024*1024)
    {
          fileSize=QString("%1 kb").arg(QString::number(size/(1024*1024)));
    }
    
    ui->val_fileSize->setText(fileSize);
    //设置文件的url
    ui->val_download->setText(fileInfo->url);
    //设置文件的分享状态
    ui->val_shareStatus->setText(QString::number(fileInfo->shareStatus));
    //设置文件的上传时间
    ui->val_uploadTime->setText(fileInfo->createTime);
    //设置文件的使用者
    ui->val_uploadUser->setText(fileInfo->user);
}
相关推荐
义一4 小时前
华为eNSP示例说明网关地址和终端IP地址不在同一网段能正常通信吗
网络
疋瓞7 小时前
C++_win_QT6学习《3》_结合qt项目开发学习git仓库相关知识
c++·qt·学习
minji...7 小时前
Linux 基础IO(一) (C语言文件接口、系统调用文件调用接口open,write,close、文件fd)
linux·运维·服务器·网络·数据结构·c++
真正的醒悟7 小时前
202503-经验之道
服务器·网络·php
qq_251616198 小时前
ubuntu nginx文件服务器
linux·服务器·网络
云计算练习生9 小时前
渗透测试行业术语—— 网络攻击方式与漏洞利用
服务器·网络·安全·渗透测试术语·网络安全术语
乾元9 小时前
SDN 与 AI 协同:控制面策略自动化与策略一致性校验
运维·网络·人工智能·网络协议·华为·系统架构·ansible
锡兰_CC9 小时前
无缝触达,卓越体验:开启openEuler世界的任意门
服务器·网络·数据库·c++·图像处理·qt·nginx
Source.Liu9 小时前
【LibreCAD】RS_Pen 类详解
qt·cad
橘子真甜~9 小时前
C/C++ Linux网络编程10 - http协议
linux·服务器·网络·c++·网络协议·http