Класс QSplashScreen
Виджет QSplashScreen предоставляет всплывающее окно, которое может быть показано во время запуска приложения. Подробнее...
| Заголовок: | #include <QSplashScreen> |
| qmake: | QT += widgets |
| Наследует: | QWidget |
Открытые функции
| QSplashScreen(QWidget *parent, 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");
qApp->processEvents();
... // Establishing connections
splash->showMessage("Established connections");
qApp->processEvents(); QSplashScreen поддерживает это с помощью функции showMessage(). Если вы хотите выполнить собственное рисование, вы можете получить указатель на используемый в всплывающем окне пиксель с помощью pixmap(). В качестве альтернативы, вы можете создать подкласс QSplashScreen и переопределить drawContents().
Документация по функциям-членам
QSplashScreen::QSplashScreen(QWidget *parent, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())
Это перегруженная функция.
Эта функция позволяет задать родительское окно для вашего всплывающего окна. Типичное использование этого конструктора — если у вас несколько экранов и вы предпочитаете размещать всплывающее окно на другом экране, отличном от основного. В этом случае передайте соответствующий desktop() в качестве parent.
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() для себя.
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.14/qsplashscreen.html