QSplashScreen Class :Qt程序启动画面类

QSplashScreen Class :Qt程序启动画面类

QSplashScreen类是QT环境提供的程序启动画面组件(widget:我喜欢称组件,当然大家都叫他部件),提供了一个启动屏幕,可以在应用程序启动期间显示它。为后续的应用程序初始化赢得时间。

目录

QSplashScreen Class :Qt程序启动画面类

QSplashScreen类的名片信息:

 Public Functions 公共函数:

Public Slots 公共槽函数:

Signals 信号:

Protected Functions 保护函数:

Reimplemented Protected Functions:重新实现保护函数:同名同参覆盖:virtual多态实现。

详细说明:

 

成员函数文档:

QSplashScreen::QSplashScreen(QWidget*parent, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())

QSplashScreen::QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())

void QSplashScreen::clearMessage()                                                                                      [slot]

void QSplashScreen::messageChanged(const QString&message)                    [signal]

void QSplashScreen::showMessage(const QString &message, int alignment = Qt::AlignLeft, const QColor &color = Qt::black)                                                                [slot] 

           QSplashScreen::~QSplashScreen()                                                                  [virtual]

void QSplashScreen::drawContents(QPainter*painter)            [virtual protected]

bool QSplashScreen::event(QEvent *e)                       [override virtual protected]

void QSplashScreen::finish(QWidget *mainWin)     

QString QSplashScreen::message() const

void QSplashScreen::mousePressEvent(QMouseEvent * event)              [override virtual protected]

const QPixmap QSplashScreen::pixmap() const

void QSplashScreen::repaint()

void QSplashScreen::setPixmap(const QPixmap &pixmap)


QSplashScreen类的名片信息:

Header:#include <QSplashScreen>
qmake:QT += widgets
Inherits:QWidget

 Public Functions 公共函数

构造函数QSplashScreen(QWidget *parent, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())
构造函数QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())
virtualQSplashScreen()
voidfinish(QWidget *mainWin)
QStringmessage() const
const QPixmappixmap() const
voidrepaint()
voidsetPixmap(const QPixmap &pixmap)

 

Public Slots 公共槽函数:

voidclearMessage()
voidshowMessage(const QString &message, int alignment = Qt::AlignLeft, const QColor &color = Qt::black)

 

Signals 信号:

voidmessageChanged(const QString &message)

 

Protected Functions 保护函数

virtual voiddrawContents(QPainter *painter)

 

Reimplemented Protected Functions:重新实现保护函数:同名同参覆盖:virtual多态实现。

virtual boolevent(QEvent *e) override
virtual voidmousePressEvent(QMouseEvent *) override

 

详细说明:

在程序初始化时,往往我们需要一个启动画面,也成为欢迎画面、初始画面。 启动画面通常用于启动时间较长的应用程序(例如需要花费时间来建立连接的数据库或网络应用程序),以向用户提供应用程序正在加载的反馈,以告诉客户程序正在正常运行,并没有出现故障。

正常情况下我们会把启动画面放在屏幕的正中央。如果我们还想把启动画面放在其他所有软件的最前面,也就是不让其他软件遮挡住我们的启动画面,我们应该使用Qt :: WindowStaysOnTopHint标志。实例:

//因为QSplashScreen类实现的组件本身就是无边框界面所以我们可以省略Qt::FramelessWindowHint
//this->setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint);

//正确的写法是只添加Qt::WindowStaysOnTopHint标志
setWindowFlags(Qt::WindowStaysOnTopHint);

//设置全屏显示。
this->showFullScreen();

某些X11窗口管理器不支持Qt :: WindowStaysOnTopHint标志 (停留顶部标志)。 一种解决方案是设置一个计时器,该计时器在启动屏幕上定期调用raise()以模拟“停留在顶部”的效果。

X11也叫做X Window系统,X Window系统 (X11或X)是一种 位图 显示的 视窗系统 。它是在 Unix 和 类Unix 操作系统 ,以及 OpenVMS 上建立图形用户界面 的标准工具包和协议,并可用于几乎所有已有的现代操作系统。

QSplashScreen类最常见的用法是在主窗口显示在屏幕上之前显示初始屏幕。下面的代码片段说明了这一点,其中显示了初始屏幕,并在显示应用程序主窗口之前执行了一些初始化任务:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPixmap pixmap(":/splash.png");
    QSplashScreen splash(pixmap);
    splash.show();
    app.processEvents();
    ...
    QMainWindow window;
    window.show();
    splash.finish(&window);
    return app.exec();
}

用户可以用鼠标点击启动界面来隐藏初始屏幕。由于启动屏幕通常在事件循环开始运行之前显示,因此需要定期调用QCoreApplication::processEvents()以接收鼠标单击。

有时用消息更新启动屏幕是很有用的,例如,在应用程序启动时宣布连接已建立或模块已加载:

QPixmap pixmap(":/splash.png");
QSplashScreen *splash = new QSplashScreen(pixmap);
splash->show();

... // Loading some items
splash->showMessage("Loaded modules");

qApp->processEvents();

... // Establishing connections
splash->showMessage("Established connections");

qApp->processEvents();

showMessage效果: 

qsprashscreen通过showMessage()函数支持此功能。如果您想绘制自己的图形,可以使用pixmap()获得一个指向启动屏幕中使用的pixmap的指针。或者,可以继承qsprashscreen类,重新实现drawContents()方法。

 

 



 

成员函数文档:

 

QSplashScreen::QSplashScreen(QWidget*parent, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())


这是一个重载函数。

此函数允许您为splashscreen指定父级。此构造函数的典型用途是,如果您有多个屏幕,并且希望在不同于主屏幕的屏幕上显示初始屏幕。在这种情况下,传递正确的desktop()作为父级。

 

QSplashScreen::QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())


构造一个初始屏幕,将显示像素图。

因为QsplashScreen为特别定制的窗口类型,我们一般除了设置f = Qt::WindowFlags()标志,其他标志不需要设置。

 

void QSplashScreen::clearMessage()                                                                                      [slot]


删除初始屏幕上显示的消息

与之对应的函数:showMessage()

 

void QSplashScreen::messageChanged(const QString&message)                    [signal]


当初始屏幕上的消息更改时,将发出此信号。 message是新消息,并且在删除消息后为空字符串。

与之有关联的函数:showMessage() clearMessage()

 

void QSplashScreen::showMessage(const QString &message, int alignment = Qt::AlignLeft, const QColor &color = Qt::black)                                                                [slot] 


将消息文本以彩色绘制到初始屏幕上,并根据对齐的标志对齐文本。此函数调用repaint()以确保立即重新绘制初始屏幕。因此,该消息与应用程序正在执行的操作(例如加载文件)保持最新。

与之有关联的函数与声明: Qt::Alignment, clearMessage(), and message()

Qt::Alignment:

水平标记:

常数说明
Qt::AlignLeft0x0001

与左边缘对齐。

Qt::AlignRight0x0002与右边缘对齐。
Qt::AlignHCenter0x0004在可用空间中水平居中。
Qt::AlignJustify0x0008对齐可用空间中的文本。

垂直标志:

常数说明
Qt::AlignTop0x0020与顶部对齐。
Qt::AlignBottom0x0040与底部对齐。
Qt::AlignVCenter0x0080在可用空间中垂直居中。
Qt::AlignBaseline0x0100与基线对齐。

二维标志:

常数说明
Qt::AlignCenterAlignVCenter | AlignHCenter在两个维度上均居中。

一次最多可以使用一个水平和一个垂直标志。Qt::AlignCenter计算为水平和垂直。 

三个枚举值对于可以从右向左模式运行的应用程序非常有用:

常数说明
Qt::AlignAbsolute0x0010如果小部件的布局方向是Qt::right to left(而不是默认的Qt::left to right),Qt::AlignLeft表示右边缘,Qt::AlignRight表示左边缘。这通常是期望的行为。如果希望Qt::AlignLeft始终表示“left”,Qt::AlignRight始终表示“right”,请将标志与Qt::AlignAbsolute组合。
Qt::AlignLeadingAlignLeft 
Qt::AlignTrailingAlignRight 

 对齐组合:

常数
Qt::AlignHorizontal_MaskAlignLeft | AlignRight | AlignHCenter | AlignJustify | AlignAbsolute
Qt::AlignVertical_MaskAlignTop | AlignBottom | AlignVCenter | AlignBaseline

 

 QSplashScreen::~QSplashScreen()                                                                  [virtual]


析构函数。

 

void QSplashScreen::drawContents(QPainter*painter)            [virtual protected]


使用Painter 绘制初始屏幕的内容。 默认实现绘制showMessage()传递的消息。 如果要在初始屏幕上绘制自己的图形,请重新实现此功能。

 

bool QSplashScreen::event(QEvent *e)                       [override virtual protected]


重新实现event【事件】功能函数。

 

void QSplashScreen::finish(QWidget *mainWin)     


使初始屏幕等待窗口小部件mainWin显示,然后对其本身调用close()。

 

QString QSplashScreen::message() const


返回当前在启动屏幕上显示的消息。
Qt 5.2中引入了此功能。

 

void QSplashScreen::mousePressEvent(QMouseEvent * event)              [override virtual protected]


重新实现鼠标按下事件。

 

const QPixmap QSplashScreen::pixmap() const


返回初始屏幕中使用的像素图。 该图像不包涵showMessage()调用绘制的任何文本。

与之相关联的函数: setPixmap()

 

void QSplashScreen::repaint()


这将覆盖QWidget::repaint()。它不同于标准的重绘函数,因为它还调用QCoreApplication::processEvents()以确保显示更新,即使不存在事件循环。

 

void QSplashScreen::setPixmap(const QPixmap &pixmap)


将用作启动屏幕图像的像素映射设置为像素映射。

与之相关联的函数: pixmap()

 



QSplashScreen类在使用中,关系最密切的应该是QPixmap类、QPainter类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值