Spec-Zone.ru › Qt

Класс 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.2/qsplashscreen.html

Spec-Zone.ru

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