【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);
}
相关推荐
小王C语言7 分钟前
【8.进行接口测试】:通过 curl 进行接口自动化测试 / 通过 python 程序进行接口自动化测试
网络·c++
一条大祥脚9 分钟前
26杭电暑期第三场 DP|费用流|分解质因子|数论|贪心|图论|期望|无穷级数
网络·图论·网络流·无穷级数·费用流
早睡早起身体好12330 分钟前
为什么 Network 中会出现两个同名请求?——CORS 预检请求学习笔记
网络·笔记·学习·网络安全
daad7771 小时前
记录matlab状态机demo
java·网络·matlab
paopaokaka_luck2 小时前
基于springboot3+vue3的智能文库平台(AI智能搜索、AI智能汇总、实时在线状态展示、多格式文档预览与富文本编辑、Echarts图形化分析)
前端·网络·spring boot·网络协议·echarts
Yang96112 小时前
告别“慢工出细活”:如何平衡光纤熔接的速度与精度?
网络
回眸不遇2 小时前
详谈 QT 布局 QLayout::SizeConstraint 和 QSizePolicy 对 QWidget 尺寸的影响
数据库·qt·系统架构
Nebula_g3 小时前
Java实现本地Socket通信(四)
网络
QH139292318804 小时前
Keysight N9917B N9918B手持式综合微波分析仪
网络·科技·嵌入式硬件·集成测试·信息与通信
Drgfd4 小时前
半导体国产替代进入“深水区”:决战设备、材料、IP三大高地
网络·fpga开发