Класс QSplashScreen
Виджет QSplashScreen предоставляет всплывающее окно, которое может быть показано во время запуска приложения. Подробнее...
| Заголовок: | #include <QSplashScreen> |
| qmake: | QT += widgets |
| Наследуется от: | QWidget |
Открытые функции
| QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags()) | |
| QSplashScreen(QWidget *parent, 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) |
- 211 открытых функций, унаследованных от 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) |
Защищённые функции
| virtual void | drawContents(QPainter *painter) |
Переопределённые защищённые функции
| virtual bool | event(QEvent *e) |
| virtual void | mousePressEvent(QMouseEvent *) |
- 35 защищённых функций, унаследованных от QWidget
- 9 защищённых функций, унаследованных от QObject
- 1 защищённая функция, унаследованная от QPaintDevice
Дополнительные унаследованные члены
- 58 свойств, унаследованных от QWidget
- 1 свойства, унаследованного от QObject
- 5 статических открытых членов, унаследованных от QWidget
- 11 статических открытых членов, унаследованных от 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 = Qt::WindowFlags())
Создаёт всплывающее окно, которое будет отображать pixmap.
Вряд ли потребуется устанавливать флаги виджета f, кроме, возможно, Qt::WindowStaysOnTopHint.
QSplashScreen::QSplashScreen(QWidget *parent, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())
Это перегруженная функция.
Эта функция позволяет указать родительский виджет для вашего всплывающего окна. Типичное использование этого конструктора — если у вас несколько экранов и вы хотите разместить всплывающее окно на другом экране, отличном от основного. В этом случае передайте нужный рабочий стол в качестве parent.
[virtual] QSplashScreen::~QSplashScreen()
Деструктор.
[slot] void QSplashScreen::clearMessage()
Удаляет сообщение, отображаемое на всплывающем окне.
См. также showMessage().
[virtual protected] void QSplashScreen::drawContents(QPainter *painter)
Отрисовывает содержимое всплывающего окна с помощью painter painter. По умолчанию реализация отрисовывает сообщение, переданное с помощью showMessage(). Переопределите эту функцию, если хотите выполнить свою собственную отрисовку на всплывающем окне.
[virtual protected] bool QSplashScreen::event(QEvent *e)
Переопределено из QObject::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().
[virtual protected] void QSplashScreen::mousePressEvent(QMouseEvent *)
Переопределено из QWidget::mousePressEvent().
const QPixmap QSplashScreen::pixmap() const
Возвращает пикчер, используемый в заставке. На изображении нет текста, добавленного вызовами showMessage().
См. также setPixmap().
void QSplashScreen::repaint()
Переопределяет QWidget::repaint(). Отличается от стандартной функции перерисовки тем, что также вызывает QApplication::flush(), чтобы гарантировать отображение обновлений даже при отсутствии цикла событий.
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.
Чтобы гарантировать немедленную перерисовку заставки, можно вызвать QCoreApplication's processEvents() после вызова showMessage(). Обычно это нужно для того, чтобы сообщение всегда соответствовало текущему состоянию вашей программы (например, загрузке файлов).
См. также Qt::Alignment, clearMessage(), и message().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qsplashscreen.html