Класс QSplashScreen
Виджет QSplashScreen предоставляет всплывающее окно, которое может быть показано во время запуска приложения. Подробнее...
| Заголовок: | #include <QSplashScreen> |
| qmake: | QT += widgets |
| Наследуется от: | QWidget |
Открытые функции
| QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = ...) | |
| QSplashScreen(QWidget *parent, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = ...) | |
| virtual | ~QSplashScreen() |
| void | finish(QWidget *mainWin) |
| QString | message() const |
| const QPixmap | pixmap() const |
| void | repaint() |
| void | setPixmap(const QPixmap &pixmap) |
- 214 открытых функций, унаследованных от QWidget
- 31 открытых функций, унаследованных от QObject
- 14 открытых функций, унаследованных от QPaintDevice
Открытые слоты
| void | clearMessage() |
| void | showMessage(const QString &message, int alignment = Qt::AlignLeft, const QColor &color = Qt::black) |
Сигналы
| void | messageChanged(const QString &message) |
Статические открытые члены
| const QMetaObject | staticMetaObject |
- 5 статических открытых членов, унаследованных от QWidget
- 9 статических открытых членов, унаследованных от QObject
Защищенные функции
| virtual void | drawContents(QPainter *painter) |
Переопределённые защищённые функции
| virtual bool | event(QEvent *e) override |
| virtual void | mousePressEvent(QMouseEvent *) override |
- 35 защищенных функций, унаследованных от QWidget
- 9 защищенных функций, унаследованных от QObject
- 1 защищенная функция, унаследованная от QPaintDevice
Дополнительные унаследованные члены
- 59 свойств, унаследованных от QWidget
- 1 свойства, унаследованные от QObject
- 1 защищенный слот, унаследованный от QWidget
Подробное описание
Виджет QSplashScreen предоставляет всплывающее окно, которое может быть показано во время запуска приложения.
Всплывающее окно — это видет, который обычно отображается при запуске приложения. Всплывающие окна часто используются для приложений с длительными временами запуска (например, баз данных или приложений с сетевыми подключениями, которые требуют времени для установления подключений), чтобы предоставить пользователю обратную связь о том, что приложение загружается.
Всплывающее окно появляется в центре экрана. Может быть полезно добавить 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();
} Пользователь может скрыть всплывающее окно, нажав на него мышкой. Поскольку всплывающее окно, как правило, отображается до того, как цикл обработки событий начнет работать, необходимо периодически вызывать QApplication::processEvents(), чтобы получать щелчки мыши.
Иногда бывает полезно обновлять всплывающее окно сообщениями, например, объявляя установленные подключения или загруженные модули при запуске приложения:
QPixmap pixmap(":/splash.png");
QSplashScreen *splash = new QSplashScreen(pixmap);
splash->show();
... // Loading some items
splash->showMessage("Loaded modules");
qApp->processEvents();
... // Establishing connections
splash->showMessage("Established connections");
qApp->processEvents(); QSplashScreen поддерживает это с помощью функции showMessage(). Если вы хотите выполнить собственное рисование, вы можете получить указатель на используемую в всплывающем окне картинку с помощью pixmap(). В качестве альтернативы вы можете создать подкласс QSplashScreen и переопределить drawContents().
Документация по функциям-членам
QSplashScreen::QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = ...)
Создаёт всплывающее окно, которое будет отображать pixmap.
Нет необходимости устанавливать флаги виджета, f, за исключением, возможно, Qt::WindowStaysOnTopHint.
QSplashScreen::QSplashScreen(QWidget *parent, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = ...)
Это перегруженная функция.
Эта функция позволяет указать родителя для вашего всплывающего окна. Типичное использование этого конструктора — если у вас несколько экранов и вы предпочитаете, чтобы всплывающее окно было на другом экране, чем ваш основной. В этом случае передайте соответствующий рабочий стол() как parent.
[virtual] QSplashScreen::~QSplashScreen()
Деструктор.
[slot] void QSplashScreen::clearMessage()
Удаляет отображаемое сообщение на всплывающем окне
См. также showMessage().
[virtual protected] void QSplashScreen::drawContents(QPainter *painter)
Отрисовывает содержимое всплывающего окна с помощью painter painter. По умолчанию реализация рисует сообщение, переданное showMessage(). Переопределите эту функцию, если хотите выполнить собственное рисование на всплывающем окне.
[override virtual protected] bool QSplashScreen::event(QEvent *e)
Переопределено из QWidget::event().
void QSplashScreen::finish(QWidget *mainWin)
Заставляет всплывающее окно ждать, пока виджет mainWin не будет отображён, прежде чем вызывать close() на самом себе.
QString QSplashScreen::message() const
Возвращает сообщение, которое в настоящее время отображается на всплывающем окне.
Эта функция была добавлена в Qt 5.2.
См. также showMessage() и clearMessage().
[signal] void QSplashScreen::messageChanged(const QString &message)
Этот сигнал испускается, когда сообщение на всплывающем окне изменяется. message — новое сообщение, и оно является пустой строкой, когда сообщение было удалено.
См. также showMessage() и clearMessage().
[override virtual protected] void QSplashScreen::mousePressEvent(QMouseEvent *)
Переопределено из QWidget::mousePressEvent().
const QPixmap QSplashScreen::pixmap() const
Возвращает пикчер, используемый в всплывающем окне. На изображении нет текста, нарисованного вызовами showMessage().
См. также setPixmap().
void QSplashScreen::repaint()
Это переопределяет QWidget::repaint(). Оно отличается от стандартной функции repaint тем, что также вызывает QApplication::processEvents(), чтобы гарантировать отображение обновлений, даже если цикл событий отсутствует.
void QSplashScreen::setPixmap(const QPixmap &pixmap)
Устанавливает пикчер, который будет использоваться в качестве изображения всплывающего окна, в 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().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qsplashscreen.html