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();
}