【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);
}
相关推荐
一律清风1 小时前
QT-文件创建时间修改器
c++·qt
不知所云,1 小时前
qt cmake自定义资源目录,手动加载资源(图片, qss文件)
开发语言·qt
Death2002 小时前
Qt 6 相比 Qt 5 的主要提升与更新
开发语言·c++·qt·交互·数据可视化
机器视觉知识推荐、就业指导2 小时前
使用Qt实现实时数据动态绘制的折线图示例
开发语言·qt
limengshi1383922 小时前
通信工程学习:什么是TFTP简单文件传输协议
网络·网络协议·学习·信息与通信
麻辣韭菜4 小时前
网络基础 【HTTP】
网络·c++·http
Deryck_德瑞克5 小时前
Java网络通信—TCP
java·网络·tcp/ip
Geek之路5 小时前
QT系统学习篇(1)
开发语言·qt·学习
GodK7775 小时前
IP 数据包分包组包
服务器·网络·tcp/ip
梁诚斌6 小时前
VSOMEIP代码阅读整理(1) - 网卡状态监听
运维·服务器·网络