Spec-Zone.ru › Qt 6.0

Класс 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 — новое сообщение, и оно является пустой строкой, когда сообщение было удалено.

См. также 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 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.0/qsplashscreen.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API