QSplashScreen 小部件提供可以展示的闪屏,在应用程序启动期间。 更多...
头: | #include <QSplashScreen> |
CMake: |
find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
继承: | QWidget |
QSplashScreen (const QPixmap & pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags()) | |
QSplashScreen (QScreen * screen , const QPixmap & pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags()) | |
virtual | ~QSplashScreen () |
void | finish (QWidget * mainWin ) |
QString | message () const |
const QPixmap | pixmap () const |
void | repaint () |
void | setPixmap (const QPixmap & pixmap ) |
void | clearMessage () |
void | showMessage (const QString & message , int alignment = Qt::AlignLeft, const QColor & color = Qt::black) |
void | messageChanged (const QString & message ) |
virtual void | drawContents (QPainter * painter ) |
virtual bool | event (QEvent * e ) override |
virtual void | mousePressEvent (QMouseEvent *) override |
闪屏是应用程序启动时,通常显示的 Widget。闪屏常用于长启动时间的应用程序 (如:数据库或花时间建立连接的网络应用程序),为用户提供应用程序加载反馈。
闪屏出现在屏幕中心。它可能很有用,添加 Qt::WindowStaysOnTopHint 到闪屏 Widget 的窗口标志,若想要把它保持在桌面所有其它窗口之上。
一些 X11 窗口管理器不支持 "停留在顶部" 标志。解决方案是设置计时器周期性调用 raise () 在闪屏以模拟 "停留在顶部" 效果。
最常见用法是展示闪屏,在屏幕中显示主 Widget 前。以下代码片段将阐明这,显示闪屏并履行一些初始化任务,在展示应用程序主窗口前:
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(); }
用户可以隐藏闪屏,通过采用鼠标点击它。为使鼠标处理能工作,调用 QApplication::processEvents () 周期性在启动期间。
有时很有用采用消息更新闪屏,例如,在应用程序启动时宣布建立连接 (或加载模块):
QPixmap pixmap(":/splash.png"); QSplashScreen *splash = new QSplashScreen(pixmap); splash->show(); ... // Loading some items splash->showMessage("Loaded modules"); QCoreApplication::processEvents(); ... // Establishing connections splash->showMessage("Established connections"); QCoreApplication::processEvents();
QSplashScreen 支持这,采用 showMessage () 函数。若希望自己绘制,可以获取用于闪屏的像素图指针采用 pixmap ()。另外,可以子类 QSplashScreen 并重实现 drawContents ().
若拥有多个屏幕,在不同屏幕而不是首要屏幕,展示闪屏是可能的。例如:
QScreen *screen = QGuiApplication::screens().at(1); QPixmap pixmap(":/splash.png"); QSplashScreen splash(screen, pixmap); splash.show();
[explicit]
QSplashScreen::
QSplashScreen
(const
QPixmap
&
pixmap
= QPixmap(),
Qt::WindowFlags
f
= Qt::WindowFlags())
构造闪屏显示 pixmap .
应该不需要设置 Widget 标志 f ,或许除了 Qt::WindowStaysOnTopHint .
这是重载函数。
此函数允许为闪屏指定屏幕。此构造函数的典型用法是若拥有多个屏幕,且首选让闪屏在不同屏幕而不是首要屏幕。在此情况下,传递适当 screen .
[virtual noexcept]
QSplashScreen::
~QSplashScreen
()
析构函数。
[slot]
void
QSplashScreen::
clearMessage
()
移除在闪屏上显示的消息
另请参阅 showMessage ().
[virtual protected]
void
QSplashScreen::
drawContents
(
QPainter
*
painter
)
绘制闪屏的内容,使用描绘器 painter 。默认实现绘制传递的消息,通过 showMessage ()。重实现此函数,若想在闪屏做自己的绘图。
[override virtual protected]
bool
QSplashScreen::
event
(
QEvent
*
e
)
重实现: QWidget::event (QEvent *event).
使闪屏等待,直到小部件 mainWin 显示先于调用 close () 在自身。
返回闪屏中目前显示的消息。
另请参阅 showMessage () 和 clearMessage ().
[signal]
void
QSplashScreen::
messageChanged
(const
QString
&
message
)
此信号发射,当闪屏中的消息改变时。 message 为新消息,和为 null 字符串当消息已移除时。
另请参阅 showMessage () 和 clearMessage ().
[override virtual protected]
void
QSplashScreen::
mousePressEvent
(
QMouseEvent
*)
重实现: QWidget::mousePressEvent (QMouseEvent *event).
返回闪屏中使用的像素图。图像不拥有任何绘制文本通过 showMessage () 调用。
另请参阅 setPixmap ().
这覆写 QWidget::repaint ()。它不同于标准重新描绘函数,因为它还调用 QCoreApplication::processEvents () 以确保显示更新,即使不存在事件循环。
把用作闪屏图像的像素图设为 pixmap .
另请参阅 pixmap ().
[slot]
void
QSplashScreen::
showMessage
(const
QString
&
message
,
int
alignment
= Qt::AlignLeft, const
QColor
&
color
= Qt::black)
绘制 message 文本在闪屏中采用颜色 color 并对齐文本根据标志 alignment 。此函数调用 repaint () 以确保立即重新描绘闪屏。因此,消息随应用程序在做的保持更新 (如:加载文件)。
另请参阅 Qt::Alignment , clearMessage (),和 message ().