网盘——分享文件——界面设计

本文主要讲解网盘中文件操作的分享文件部分,主要包含两方面的设计:分享文件界面设计和逻辑设计。

1、界面设计

1.1、添加一个类

1.2、引入头文件

#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QButtonGroup>
#include <QScrollArea>

1.3、添加对象

private://全选QPushButton *m_pSelectAllPB;//取消QPushButton *m_pCancelSelectPB;//确定QPushButton *m_pOKPB;//取消分享QPushButton *m_pCancelPB;//中间显示好友的区域QScrollArea *m_pSA;QWidget *m_pFriendW;QButtonGroup *m_pButtonGroup;

1.4、添加控件,定义布局

ShareFile::ShareFile(QWidget *parent) : QWidget(parent)
{//全选m_pSelectAllPB = new QPushButton("全选");//取消m_pCancelSelectPB = new QPushButton("取消选择");//确定m_pOKPB = new QPushButton("确定");//取消分享m_pCancelPB = new QPushButton("取消");//中间显示好友的区域m_pSA = new QScrollArea;m_pFriendW = new QWidget;m_pButtonGroup = new QButtonGroup(m_pFriendW);QHBoxLayout *pTopHBL = new QHBoxLayout;pTopHBL->addWidget(m_pSelectAllPB);pTopHBL->addWidget(m_pCancelSelectPB);pTopHBL->addStretch();//弹簧QHBoxLayout *pDownHBL = new QHBoxLayout;pDownHBL->addWidget(m_pOKPB);pDownHBL->addWidget(m_pCancelPB);QVBoxLayout *pMainVBL = new QVBoxLayout;pMainVBL->addLayout(pTopHBL);pMainVBL->addWidget(m_pSA);pMainVBL->addLayout(pDownHBL);setLayout(pMainVBL);
}

1.5、展示效果

1.6、将好友放进来

void ShareFile::test()
{QVBoxLayout *p = new QVBoxLayout(m_pFriendW);QCheckBox *pCB = NULL;for(int i=0;i<15;i++){pCB = new QCheckBox("jack");p->addWidget(pCB);m_pButtonGroup->addButton(pCB);}m_pSA->setWidget(m_pFriendW);
}

#include "sharefile.h"ShareFile::ShareFile(QWidget *parent) : QWidget(parent)
{//全选m_pSelectAllPB = new QPushButton("全选");//取消m_pCancelSelectPB = new QPushButton("取消选择");//确定m_pOKPB = new QPushButton("确定");//取消分享m_pCancelPB = new QPushButton("取消");//中间显示好友的区域m_pSA = new QScrollArea;m_pFriendW = new QWidget;m_FriendWVBL = new QVBoxLayout(m_pFriendW);m_pButtonGroup = new QButtonGroup(m_pFriendW);m_pButtonGroup->setExclusive(false);QHBoxLayout *pTopHBL = new QHBoxLayout;pTopHBL->addWidget(m_pSelectAllPB);pTopHBL->addWidget(m_pCancelSelectPB);pTopHBL->addStretch();//弹簧QHBoxLayout *pDownHBL = new QHBoxLayout;pDownHBL->addWidget(m_pOKPB);pDownHBL->addWidget(m_pCancelPB);QVBoxLayout *pMainVBL = new QVBoxLayout;pMainVBL->addLayout(pTopHBL);pMainVBL->addWidget(m_pSA);pMainVBL->addLayout(pDownHBL);setLayout(pMainVBL);
}ShareFile &ShareFile::getinstance()
{static ShareFile instance;return instance;
}void ShareFile::test()
{QVBoxLayout *p = new QVBoxLayout(m_pFriendW);QCheckBox *pCB = NULL;for(int i=0;i<15;i++){pCB = new QCheckBox("jack");p->addWidget(pCB);m_pButtonGroup->addButton(pCB);}m_pSA->setWidget(m_pFriendW);
}void ShareFile::updateFriend(QListWidget *pFriendList)
{if(NULL == pFriendList){return;}QAbstractButton *tmp = NULL;//刷新掉以前的QList<QAbstractButton*>preFriendList = m_pButtonGroup->buttons();for(int i=0;i<preFriendList.size();i++){tmp = preFriendList[i];m_FriendWVBL->removeWidget(tmp);m_pButtonGroup->removeButton(tmp);preFriendList.removeOne(tmp);delete tmp;tmp = NULL;}//将新的放进来QAbstractButton *pCB = NULL;for(int i=0;i<pFriendList->count();i++){pCB = new QCheckBox(pFriendList->item(i)->text());m_FriendWVBL->addWidget(pCB);m_pButtonGroup->addButton(pCB);}m_pSA->setWidget(m_pFriendW);
}

现在简单的界面设计就做好了

1.7、将在线好友添加到界面上显示

    //分享文件void shareFile();

1.8、关联槽函数

    //关联分享文件槽函数connect(m_pShareFilePB, SIGNAL(clicked(bool)),this, SLOT(shareFile()));

1.9、添加定义

void Book::shareFile()
{//获得好友列表Friend *pFriend = OpeWidget::getInstance().getFriend();QListWidget *pFriendList = pFriend->getFriendlist();//将内容依次遍历出来for(int i=0;i<pFriendList->count();i++){qDebug()<<pFriendList->item(i)->text();}
}

测试一下

获得在线好友列表是没有问题的

1.10、将sharefile写成单例模式

    static ShareFile &getinstance();
ShareFile &ShareFile::getinstance()
{static ShareFile instance;return instance;
}

1.11、更新好友函数

    //更新friendvoid updateFriend(QListWidget *pFriendList);
void ShareFile::updateFriend(QListWidget *pFriendList)
{if(NULL == pFriendList){return;}QAbstractButton *tmp = NULL;//刷新掉以前的QList<QAbstractButton*>preFriendList = m_pButtonGroup->buttons();for(int i=0;i<preFriendList.size();i++){tmp = preFriendList[i];m_FriendWVBL->removeWidget(tmp);m_pButtonGroup->removeButton(tmp);preFriendList.removeOne(tmp);delete tmp;tmp = NULL;}//将新的放进来QAbstractButton *pCB = NULL;for(int i=0;i<pFriendList->count();i++){pCB = new QCheckBox(pFriendList->item(i)->text());m_FriendWVBL->addWidget(pCB);m_pButtonGroup->addButton(pCB);}m_pSA->setWidget(m_pFriendW);
}

1.12、共享文件函数

void Book::shareFile()
{//获得好友列表Friend *pFriend = OpeWidget::getInstance().getFriend();QListWidget *pFriendList = pFriend->getFriendlist();ShareFile::getinstance().updateFriend(pFriendList);
}

测试一下

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/317739.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 矩阵

目录 了解矩阵的数学原理&#xff08;大学线性代数&#xff09; 矩阵及转置矩阵 矩阵乘法 矩阵快速幂 相伴矩阵模板 [相伴矩阵,快速矩阵幂]CSES1722 Fibonacci Numbers 了解矩阵的数学原理&#xff08;大学线性代数&#xff09; 矩阵及转置矩阵 这里A就是一个矩阵&…

C++中的异常

目录 1.C语言传统的处理错误的方式 2. C异常概念 3. 异常的使用 3.1 异常的抛出和捕获 3.2 异常的重新抛出 3.3异常安全 3.4 异常规范 4.自定义异常体系 5.C标准库的异常体系 6.异常的优缺点 7.func&#xff08;&#xff09; throw();的方式规范化 1.C语言传统的处理…

如何判断第三方软件测试公司是否具有资质

在软件开发的过程中&#xff0c;软件测试是确保软件质量、稳定性和用户体验的关键环节。许多企业选择将软件测试工作交给专业的第三方软件测试公司来完成&#xff0c;以确保测试的准确性和公正性。但是&#xff0c;如何判断一个第三方软件测试公司是否具有资质呢&#xff1f;以…

idea中使用GlassFish服务器启动项目

idea中使用GlassFish服务器进行测试 1.项目背景 当前在研究openMDM项目, 不过该项目不是springboot项目, 并且是使用GlassFish进行war部署的, 但是需要在idea中进行项目的二次开发,故需要进行idea启动项目并且进行开发和调试 2.GlassFish是什么 GlassFish是一个web服务器, …

基于ssm+vue+Mysql的药源购物网站

开发语言&#xff1a;Java框架&#xff1a;ssmJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;Maven3.…

使用Gitbook生成电子书

背景 《Google工程实践文档》相对原文Google’s Engineering Practices documentation &#xff0c;部分内容过时了。需要更新中文版&#xff0c;并使用Gitbook把Markdown文件转换成对应的PDF电子书。   上一次生成PDF电子书是5年前&#xff0c;当时生成电子书的环境早已不在…

东莞酷得 遥控小车电子方案技术关键要点

遥控玩具车的软件技术开发是一个综合性的过程&#xff0c;涉及到无线通信技术、硬件设计、软件编程、用户交互设计等多个方面。开发者需要具备跨学科的知识和技能&#xff0c;以确保最终产品的性能和用户体验。 遥控玩具车的软件技术开发涉及以下几个关键要点&#xff1a; 1、…

HTTP/1.1、HTTP/2、HTTP/3 的演变

HTTP/1.1、HTTP/2、HTTP/3 的演变 HTTP/1.1 相比 HTTP/1.0 提高了什么性能&#xff1f;HTTP/2 做了什么优化&#xff1f;HTTP/3 做了哪些优化&#xff1f; HTTP/1.1 相比 HTTP/1.0 提高了什么性能&#xff1f; HTTP/1.1 相比 HTTP/1.0 性能上的改进&#xff1a; 使用长连接的…

Day27:阻塞队列、Kafka入门、发送系统通知、显示系统

阻塞队列BlockingQueue BlockingQueue 解决线程通信的问题。阻塞方法:put、take。 生产者消费者模式 生产者:产生数据的线程。消费者:使用数据的线程。 &#xff08;Thread1生产者&#xff0c;Thread2消费者&#xff09; 实现类 ArrayBlockingQueueLinkedBlockingQueuePr…

java-链表排序

需求 思路 排序&#xff1a;讲所有的值都取出来&#xff0c;存储到ArrayList中&#xff0c;然后排序&#xff0c;将排序之后的元素依次使用add方法添加到自定义链表合并排序&#xff1a;先合并&#xff0c;然后调用刚才写的排序算法合并&#xff1a;将表一的头结点作为新链表的…

Unity ParticleSystem 入门

概述 在项目的制作过程成&#xff0c;一定少不了粒子系统的使用吧&#xff0c;如果你想在项目粒子效果&#xff0c;那这部分的内容一定不要错过喔&#xff01;我添加了理解和注释更好理解一点&#xff01; 这次的内容比较多&#xff0c;右侧有目录&#xff0c;可以帮助快速导…

一文理解前端如何调用后端(java)方法

阅读完文章大约需要3~5分钟 文章目录 一、什么是后端方法路径&#xff1f;二、ajax、axios调用后端方法总结 一、什么是后端方法路径&#xff1f; 这里针对的是 java 后端项目中在 controller 文件夹中的类文件&#xff0c;这类文件的后缀一般都会带有 controller&#xff0c…

【webrtc】MessageHandler 9: 基于线程的消息处理:执行Port销毁自己

Port::Port 构造的时候,就触发了一个异步操作,但是这个操作是要在 thread 里执行的,因此要通过post 消息 MSG_DESTROY_IF_DEAD 到thread跑:port的创建并米有要求在thread中 但是port的析构却在thread里 这是为啥呢?

Jenkins邮件发送失败问题解决

如下提示为 Extended E-mail Notification开启Debug模式下显示的错误信息&#xff0c; (Debug模式设置方法&#xff1a;Dashboard-> manage Jenkins->configure System)DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM XOAUTH2 DEB…

LabVIEW高效目标跟踪系统

LabVIEW高效目标跟踪系统 随着机器视觉技术的飞速发展&#xff0c;设计和实现高效的目标跟踪系统成为了众多领域关注的焦点。基于LabVIEW平台&#xff0c;结合NI Vision机器视觉库&#xff0c;开发了一种既高效又灵活的目标跟踪系统。通过面向对象编程方法和队列消息处理器程序…

图像置乱加密-Arnold加密算法

置乱加密是另一种较常用的加密方法&#xff0c;现也被许多文献选用&#xff0c;置乱加密可以是以像素为单位进行全局置乱&#xff0c;该方式打乱了图像像素值的位置&#xff0c;使其图像内容失去相关性&#xff0c;达到保护的目的。也可以是以块为单位进行置乱&#xff0c;该方…

[数据结构]———交换排序

目录 1.交换排序 第一个定义了一个名为Swap的函数 第二个三数取中 2.冒泡排序 代码解析 冒泡排序的特性总结&#xff1a; 3.快速排序 1. hoare版本 2. 挖坑法 代码解析 3. 前后指针版本 代码解析 1.交换排序 基本思想&#xff1a;所谓交换&#xff0c;就是根据序列中两…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-6.4--汇编LED驱动程序

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

【PPT设计】颜色对比、渐变填充、简化框线、放大镜效果、渐变形状配图、线条的使用

目录 图表颜色对比、渐变填充、简化框线放大镜效果渐变形状配图 线条的使用区分标题与说明信息区分标题与正文,区分不同含义的内容**聚焦****引导****注解****装饰** 图表 颜色对比、渐变填充、简化框线 小米汽车正式亮相&#xff01;你们都在讨论价格&#xff0c;我全程只关…

[1673]jsp在线考试管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 在线考试管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…