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

本文详细描述了网盘应用中文件分享功能的界面设计,包括添加控件、布局管理、好友列表显示以及单例模式实现,重点介绍了如何使用Qt的QWidgets和相关布局进行友好的用户交互。
摘要由CSDN通过智能技术生成

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

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、更新好友函数

    //更新friend
    void 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);
}

测试一下

 

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值