QT 360安全卫士

github 上下载源码分析,供学习参考。

主界面ui 以及动画组:

#include "mainwindow.h"
#include "mainbottomwidget.h"
#include "maintopwidget.h"
#include "../safe/safewidget.h"
#include "../clean/cleanwidget.h"
#include "../youhua/youhuawidget.h"
#include "common/opacitywidget.h"
#include "common/videowidget.h"
#include <QApplication>
#include <QFile>
#include <QStackedWidget>
#include <QPropertyAnimation>
#include <QParallelAnimationGroup>
#include <QLabel>
#include <QIcon>
 
 
MainWindow::MainWindow(QWidget *parent) :
    ShadowWidget(parent)
{
    this->initUI();
    this->initAnim();
    this->initConnect();
}
 
 
void MainWindow::initUI()
{
    this->setFixedSize(900, 600);
    this->setWindowIcon(QIcon(":/main/Logo"));
    this->setWindowTitle(tr("360安全卫士"));
    m_video = new VideoWidget(this);
    m_stackWidget = new QStackedWidget(this);
    m_stackWidget->setGeometry(rect());
    m_stackWidget->lower();
 
 
    //m_grayWidget = new BaseStyleWidget(this);
    m_grayWidget = new OpacityWidget(this);
    m_grayWidget->setGeometry(rect());
    m_grayWidget->setColor(QColor(Qt::gray));
 
 
    m_topWidget = new MainTopWidget(this);
    m_bottomWidget = new MainBottomWidget(this);
 
 
    m_safeWidget = new SafeWidget;
    m_stackWidget->addWidget(m_safeWidget);
    m_cleanWidget = new CleanWidget;
    m_stackWidget->addWidget(m_cleanWidget);
    m_youhuaWidget = new YouhuaWidget;
    m_stackWidget->addWidget(m_youhuaWidget);
}
 
 
void MainWindow::initConnect()
{
    connect(m_topWidget, SIGNAL(goExamine()), m_bottomWidget, SLOT(goExamine()));
    connect(m_topWidget, SIGNAL(goMain()), m_bottomWidget, SLOT(goMain()));
    connect(m_topWidget, SIGNAL(showMin()), this, SLOT(showMinimized()));
    connect(m_topWidget, SIGNAL(closeWidget()), this, SLOT(closeWidget()));
    connect(m_topWidget, SIGNAL(playVideo()), this, SLOT(playVideo()));
    connect(m_topWidget, SIGNAL(showSkin()), this, SLOT(showSkin()));
    connect(m_safeWidget, SIGNAL(goToMain()), this, SLOT(goToMain()));
    connect(m_cleanWidget, SIGNAL(goToMain()), this, SLOT(goToMain()));
    connect(m_youhuaWidget, SIGNAL(goToMain()), this, SLOT(goToMain()));
    connect(m_bottomWidget, SIGNAL(safeClicked()), this, SLOT(goToSafe()));
    connect(m_bottomWidget, SIGNAL(cleanClicked()), this, SLOT(goToClean()));
    connect(m_bottomWidget, SIGNAL(youhuaClicked()), this, SLOT(goToYouhua()));
    connect(m_upGroup, SIGNAL(finished()), this, SLOT(upAnimFinished()));
}
 
 
void MainWindow::initAnim()
{
    QPropertyAnimation *m_upMainAnimation = new QPropertyAnimation(m_topWidget, "pos");
    m_upMainAnimation->setDuration(200);
    m_upMainAnimation->setStartValue(QPoint(0, 0));
    m_upMainAnimation->setEndValue(QPoint(0, -440));
 
 
    QPropertyAnimation *m_downMainAnimation = new QPropertyAnimation(m_bottomWidget, "pos");
    m_downMainAnimation->setDuration(200);
    m_downMainAnimation->setStartValue(QPoint(0, 440));
    m_downMainAnimation->setEndValue(QPoint(0, 600));
 
 
    QPropertyAnimation  *m_toTrans = new QPropertyAnimation(m_grayWidget, "opacity");
    m_toTrans->setDuration(200);
    m_toTrans->setStartValue(1);
    m_toTrans->setEndValue(0);
 
 
    m_upGroup = new QParallelAnimationGroup;
    m_upGroup->addAnimation(m_upMainAnimation);
    m_upGroup->addAnimation(m_downMainAnimation);
    m_upGroup->addAnimation(m_toTrans);
 
 
    QPropertyAnimation *m_upGarAnimation = new QPropertyAnimation(m_topWidget, "pos");
    m_upGarAnimation->setDuration(200);
    m_upGarAnimation->setStartValue(QPoint(0, -440));
    m_upGarAnimation->setEndValue(QPoint(0, 0));
 
 
    QPropertyAnimation *m_downGarAnimation = new QPropertyAnimation(m_bottomWidget, "pos");
    m_downGarAnimation->setDuration(200);
    m_downGarAnimation->setStartValue(QPoint(0, 600));
    m_downGarAnimation->setEndValue(QPoint(0, 440));
 
 
    QPropertyAnimation  *m_toGray = new QPropertyAnimation(m_grayWidget, "opacity");
    m_toGray->setDuration(200);
    m_toGray->setStartValue(0);
    m_toGray->setEndValue(1);
 
 
    m_downGroup = new QParallelAnimationGroup;
    m_downGroup->addAnimation(m_upGarAnimation);
    m_downGroup->addAnimation(m_downGarAnimation);
    m_downGroup->addAnimation(m_toGray);
}
 
 
void MainWindow::upAnimFinished()
{
    m_grayWidget->hide();
}
 
 
void MainWindow::playVideo()
{
    m_video->move(mapToGlobal(QPoint(0,0)));//移动到与主窗口同一位置
    m_video->startVideo();
    m_video->exec();
}
 
 
void MainWindow::showMenu()
{
 
 
}
 
 
void MainWindow::goToMain()
{
    m_grayWidget->show();
    m_downGroup->start();
}
 
 
void MainWindow::goToSafe()
{
    m_stackWidget->setCurrentIndex(0);
    m_upGroup->start();
}
 
 
void MainWindow::goToClean()
{
    m_stackWidget->setCurrentIndex(1);
    m_upGroup->start();
    m_cleanWidget->startFirst();
}
 
 
void MainWindow::goToYouhua()
{
    m_stackWidget->setCurrentIndex(2);
    m_upGroup->start();
}
 
 
void MainWindow::showSkin()
{
    QFile qss(":/qss/skin");
    qss.open(QFile::ReadOnly);
    qApp->setStyleSheet(qss.readAll());
    qss.close();
    update();
}
 
 
void MainWindow::closeWidget()
{
    qApp->quit();
}
 
 
void MainWindow::showMin()
{
 
 
}
 
 

界面、运行效果:


猜你喜欢

转载自blog.csdn.net/qq_23400367/article/details/80816978