Класс QSplashScreen
Виджет QSplashScreen предоставляет всплывающее окно, которое может быть показано во время запуска приложения. Подробнее...
| Заголовок: | #include <QSplashScreen> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследует: | QWidget |
Открытые функции
| QSplashScreen(QScreen *screen, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags()) | |
| QSplashScreen(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 |
Подробное описание
Всплывающее окно — это виджет, который обычно отображается при запуске приложения. Всплывающие окна часто используются для приложений с длительными временами запуска (например, для приложений баз данных или сетевых приложений, которые тратят время на установление соединений), чтобы предоставить пользователю обратную связь о том, что приложение загружается.
Всплывающее окно появляется в центре экрана. Может быть полезно добавить флаг Qt::WindowStaysOnTopHint к флагам окна виджета всплывающего окна, если вы хотите, чтобы оно оставалось поверх всех других окон на рабочем столе.
Некоторые менеджеры окон X11 не поддерживают флаг «оставаться поверх». Решением является настройка таймера, который периодически вызывает raise() для всплывающего окна, чтобы имитировать эффект «оставаться поверх».
Наиболее распространенное использование — отобразить всплывающее окно до отображения основного виджета на экране. Это показано в следующем фрагменте кода, в котором отображается всплывающее окно, и перед отображением главного окна приложения выполняются некоторые задачи инициализации:
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");
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(); Документация по членам-функциям
[since 5.15] QSplashScreen::QSplashScreen(QScreen *screen, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())
Это перегруженная функция.
Эта функция позволяет указать экран для вашего всплывающего окна. Типичное использование этого конструктора — если у вас несколько экранов и вы предпочитаете иметь всплывающее окно на другом экране, кроме основного. В этом случае передайте нужный screen.
Эта функция была добавлена в Qt 5.15.
QSplashScreen::QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())
Создает всплывающее окно, которое будет отображать pixmap.
Не должно быть необходимости устанавливать флаги виджета, f, за исключением, возможно, Qt::WindowStaysOnTopHint.
[slot] void QSplashScreen::clearMessage()
Удаляет отображаемое на всплывающем окне сообщение
См. также showMessage().
[signal] void QSplashScreen::messageChanged(const QString &message)
Этот сигнал излучается при изменении сообщения на всплывающем окне. message — новое сообщение, а null-строка, когда сообщение было удалено.
См. также showMessage() и clearMessage().
[slot] void QSplashScreen::showMessage(const QString &message, int alignment = Qt::AlignLeft, const QColor &color = Qt::black)
Отображает текст message на всплывающем окне цветом color и выравнивает текст в соответствии с флагами в alignment. Эта функция вызывает repaint(), чтобы гарантировать немедленное перерисовку всплывающего окна. В результате сообщение сохраняется актуальным в соответствии с действиями вашего приложения (например, загрузкой файлов).
См. также Qt::Alignment, clearMessage() и message().
[virtual] QSplashScreen::~QSplashScreen()
Деструктор.
[virtual protected] void QSplashScreen::drawContents(QPainter *painter)
Отображает содержимое всплывающего окна с помощью painter. По умолчанию реализация отображает сообщение, переданное showMessage(). Переопределите эту функцию, если хотите выполнить собственное рисование на всплывающем окне.
[override virtual protected] bool QSplashScreen::event(QEvent *e)
Переопределяет: QWidget::event(QEvent *event).
void QSplashScreen::finish(QWidget *mainWin)
Заставляет всплывающее окно ожидать отображения виджета mainWin перед вызовом close() на самом себе.
[since 5.2] QString QSplashScreen::message() const
Возвращает сообщение, которое в настоящее время отображается на всплывающем окне.
Эта функция была добавлена в Qt 5.2.
См. также showMessage() и clearMessage().
[override virtual protected] void QSplashScreen::mousePressEvent(QMouseEvent *)
Переопределяет: QWidget::mousePressEvent(QMouseEvent *event).
const QPixmap QSplashScreen::pixmap() const
Возвращает пиктограмму, используемую в всплывающем окне. Изображение не содержит никакого текста, нарисованного вызовами showMessage().
См. также setPixmap().
void QSplashScreen::repaint()
Переопределяет QWidget::repaint(). Отличается от стандартной функции repaint тем, что также вызывает QCoreApplication::processEvents(), чтобы обеспечить отображение обновлений, даже при отсутствии цикла событий.
void QSplashScreen::setPixmap(const QPixmap &pixmap)
Устанавливает пикчер, который будет использоваться в качестве изображения экрана загрузки, в pixmap.
См. также pixmap().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qsplashscreen.html