Spec-Zone.ru › Qt 5.15

Класс QSplashScreen

Виджет QSplashScreen предоставляет экран загрузки, который может быть показан во время запуска приложения. Подробнее...

Заголовок: #include <QSplashScreen>
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();

Документация по функциям-членам

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. По умолчанию реализация рисует сообщение, переданное showMessage(). Переопределите эту функцию, если хотите выполнить собственные операции рисования на экране загрузки.

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

Переопределяет: QWidget::event(QEvent *event).

void QSplashScreen::finish(QWidget *mainWin)

Заставляет экран загрузки ждать, пока виджет mainWin не будет отображен, прежде чем вызвать close() для самого себя.

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-5.15/qsplashscreen.html

Spec-Zone.ru

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