Класс 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();
} Пользователь может скрыть всплывающее окно, щелкнув по нему мышкой. Поскольку всплывающее окно обычно отображается до того, как запущен цикл событий, необходимо периодически вызывать 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(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 тем, что также вызывает QApplication::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.13/qsplashscreen.html