qt支持最上层弹出的自定义启动动画,实现不存在任务栏且不是固定死在最上层。

Qt::Widget               //是一个窗口或部件,有父窗口就是部件,没有就是窗口
Qt::Window               //是一个窗口,有窗口边框和标题
Qt::Dialog               //是一个对话框窗口
Qt::Sheet                //是一个窗口或部件Macintosh表单
Qt::Drawer               //是一个窗口或部件Macintosh抽屉,去掉窗口左上角的图标
Qt::Popup                //是一个弹出式顶层窗口
Qt::Tool                 //是一个工具窗口
Qt::ToolTip              //是一个提示窗口,没有标题栏和窗口边框
Qt::SplashScreen         //是一个欢迎窗口,是QSplashScreen构造函数的默认值
Qt::Desktop              //是一个桌面窗口或部件
Qt::SubWindow            //是一个子窗口
Qt::CustomizeWindowHint          //关闭默认窗口标题提示
Qt::WindowTitleHint              //为窗口修饰一个标题栏
Qt::WindowSystemMenuHint         //为窗口修饰一个窗口菜单系统
Qt::WindowMinimizeButtonHint     //为窗口添加最小化按钮
Qt::WindowMaximizeButtonHint     //为窗口添加最大化按钮
Qt::WindowMinMaxButtonsHint      //为窗口添加最大化和最小化按钮
Qt::WindowCloseButtonHint			//窗口只有一个关闭按钮
Qt::WindowStaysOnTopHint	//总在最上面的窗口,置前

main.cpp

#include "splashsceen.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    SplashSceen w;
    w.show();
    w.activateWindow(); //保证窗口从上层弹出。部分系统不设置这个也是从最上层弹出。

    return a.exec();
}

头文件

#ifndef SPLASHSCEEN_H
#define SPLASHSCEEN_H

#include <QWidget>
#include <QMovie>
#include <QApplication>
#include <QDesktopWidget>
#include <QLabel>
#include <QVBoxLayout>
class SplashSceen : public QWidget
{
    Q_OBJECT

public:
    explicit SplashSceen(QWidget *parent = nullptr);
    ~SplashSceen();

    void showEvent(QShowEvent *event);
private:
    QLabel* m_lab;
};

#endif // SPLASHSCEEN_H

cpp文件

#include "splashsceen.h"


SplashSceen::SplashSceen(QWidget *parent) :
    QWidget(parent)
{
    this->setWindowFlags(Qt::Tool|Qt::FramelessWindowHint);//设置工具窗口不显示在任务栏,且无边框
    this->setAttribute(Qt::WA_TranslucentBackground);      //背景透明
    this->setAttribute(Qt::WA_DeleteOnClose);              //close后自动析构

    this->setGeometry((QApplication::desktop()->width()-width())/2,(QApplication::desktop()->height()-height())/2,300,300);
    m_lab = new QLabel("启动动画",this);
    m_lab->setStyleSheet("font-size:28px");
    m_lab->setAlignment(Qt::AlignCenter);

    QVBoxLayout* lay = new QVBoxLayout(this);
    lay->addWidget(m_lab);
    this->setLayout(lay);
    lay->setContentsMargins(0,0,0,0);

}

SplashSceen::~SplashSceen()
{
}

void SplashSceen::showEvent(QShowEvent *event)
{
    QMovie* movie = new QMovie(m_lab);
    m_lab->setMovie(movie);
    movie->setScaledSize(m_lab->size());
    movie->setFileName("movie.gif");
    movie->start();
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方忘忧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值