Класс QApplication
Класс QApplication управляет потоком управления и основными настройками графического приложения. Подробнее...
| Заголовок: | #include <QApplication> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследует: | QGuiApplication |
Свойства
|
|
Открытые функции
| QApplication(int &argc, char **argv) | |
| virtual | ~QApplication() |
| QString | styleSheet() const |
Переопределенные открытые функции
| virtual bool | notify(QObject *receiver, QEvent *e) override |
Открытые слоты
| void | aboutQt() |
| bool | autoSipEnabled() const |
| void | closeAllWindows() |
| void | setAutoSipEnabled(const bool enabled) |
| void | setStyleSheet(const QString &sheet) |
Сигналы
| void | focusChanged(QWidget *old, QWidget *now) |
Статические открытые члены
| QWidget * | активныйМодальныйВиджет() |
| QWidget * | активныйВиджетПопАпа() |
| QWidget * | активноеОкно() |
| void | оповещение(QWidget *widget, int msec = 0) |
| QWidgetList | всеВиджеты() |
| void | звуковойСигнал() |
| int | времяМорганияКурсора() |
| int | интервалДвойногоЩелканья() |
| int | exec() |
| QWidget * | виджетФокуса() |
| QFont | шрифт() |
| QFont | шрифт(const QWidget *widget) |
| QFont | шрифт(const char *className) |
| bool | включенЭффект(Qt::UIEffect effect) |
| int | интервалВводаСКлавиатуры() |
| Qt::NavigationMode | режимНавигации() |
| QPalette | палитра(const QWidget *widget) |
| QPalette | палитра(const char *className) |
| void | установитьАктивноеОкно(QWidget *active) |
| void | установитьВремяМорганияКурсора(int) |
| void | установитьИнтервалДвойногоЩелканья(int) |
| void | включитьЭффект(Qt::UIEffect effect, bool enable = true) |
| void | установитьШрифт(const QFont &font, const char *className = nullptr) |
| void | установитьИнтервалВводаСКлавиатуры(int) |
| void | установитьРежимНавигации(Qt::NavigationMode mode) |
| void | установитьПалитру(const QPalette &palette, const char *className = nullptr) |
| void | установитьРасстояниеДляПеретаскивания(int l) |
| void | установитьВремяДляПеретаскивания(int ms) |
| void | установитьСтиль(QStyle *style) |
| QStyle * | установитьСтиль(const QString &style) |
| void | установитьКоличествоСтрокПрокруткиКолесиком(int) |
| int | расстояниеДляПеретаскивания() |
| int | времяДляПеретаскивания() |
| QStyle * | стиль() |
| QWidget * | верхнийУровеньВТочке(const QPoint &point) |
| QWidget * | верхнийУровеньВТочке(int x, int y) |
| QWidgetList | верхниеУровневыеВиджеты() |
| int | количествоСтрокПрокруткиКолесиком() |
| QWidget * | виджетВТочке(const QPoint &point) |
| QWidget * | виджетВТочке(int x, int y) |
Переопределенные Защищенные Функции
| virtual bool | обработкаСобытия(QEvent *e) override |
Макросы
| qApp |
Подробное Описание
QApplication специализирует QGuiApplication с некоторой функциональностью, необходимой для приложений на основе QWidget. Он обрабатывает инициализацию и завершение работы, специфичные для виджетов.
Для любого приложения с графическим интерфейсом пользователя Qt существует ровно один объект QApplication, независимо от того, есть у приложения 0, 1, 2 или более окон в данный момент. Для приложений Qt, не основанных на QWidget, используйте QGuiApplication, так как он не зависит от библиотеки QtWidgets.
Некоторые приложения с графическим интерфейсом пользователя предоставляют специальный пакетный режим, т.е. предоставляют аргументы командной строки для выполнения задач без ручного вмешательства. В таком неграфическом режиме часто достаточно создать обычный QCoreApplication, чтобы избежать ненужной инициализации ресурсов, необходимых для графического пользовательского интерфейса. Следующий пример показывает, как динамически создать соответствующий тип экземпляра приложения:
QCoreApplication* createApplication(int &argc, char *argv[])
{
for (int i = 1; i < argc; ++i) {
if (!qstrcmp(argv[i], "-no-gui"))
return new QCoreApplication(argc, argv);
}
return new QApplication(argc, argv);
}
int main(int argc, char* argv[])
{
QScopedPointer<QCoreApplication> app(createApplication(argc, argv));
if (qobject_cast<QApplication *>(app.data())) {
// start GUI version...
} else {
// start non-GUI version...
}
return app->exec();
} Объект QApplication доступен через функцию instance(), которая возвращает указатель, эквивалентный глобальному указателю qApp.
Основные области ответственности QApplication:
- Он инициализирует приложение с настройками рабочего стола пользователя, такими как палитры(), шрифты() и интервал двойного щелчка. Он отслеживает эти свойства на случай, если пользователь изменит рабочий стол глобально, например, через какое-либо средство управления.
- Он выполняет обработку событий, что означает, что он получает события от базовой системы окон и направляет их соответствующим виджетам. Используя sendEvent() и postEvent(), вы можете отправлять свои собственные события виджетам.
- Он анализирует общие аргументы командной строки и соответственно устанавливает своё внутреннее состояние. См. документацию конструктора ниже для получения более подробной информации.
- Он определяет внешний вид приложения, который упакован в объект QStyle. Это можно изменить во время выполнения с помощью setStyle().
- Он предоставляет локализованные строки, видимые пользователю, через translate().
- Он предоставляет некоторые магические объекты, такие как буфер обмена().
- Он знает о окнах приложения. Вы можете спросить, какой виджет находится в определённой позиции, используя widgetAt(), получить список верхнихУровневыхВиджетов и закрытьВсеОкна и т.д.
- Он управляет обработкой курсора мыши, см. setOverrideCursor()
Поскольку объект QApplication выполняет так много инициализации, его необходимо создавать перед созданием других объектов, связанных с пользовательским интерфейсом. QApplication также обрабатывает общие аргументы командной строки. Поэтому обычно рекомендуется создавать его перед любой интерпретацией или модификацией argv в самом приложении.
| Группы функций | |
|---|---|
| Настройки системы | desktopSettingsAware(), setDesktopSettingsAware(), cursorFlashTime(), setCursorFlashTime(), doubleClickInterval(), setDoubleClickInterval(), setKeyboardInputInterval(), wheelScrollLines(), setWheelScrollLines(), palette(), setPalette(), font(), setFont(), fontMetrics(). |
| Обработка событий | exec(), processEvents(), exit(), quit(). sendEvent(), postEvent(), sendPostedEvents(), removePostedEvents(), notify(). |
| Стили GUI | style(), setStyle(). |
| Обработка текста | installTranslator(), removeTranslator() translate(). |
| Виджеты | allWidgets(), topLevelWidgets(), activePopupWidget(), activeModalWidget(), clipboard(), focusWidget(), activeWindow(), widgetAt(). |
| Расширенная обработка курсора | overrideCursor(), setOverrideCursor(), restoreOverrideCursor(). |
| Разное | closeAllWindows(), startingUp(), closingDown(). |
См. также QCoreApplication, QAbstractEventDispatcher, QEventLoop, и QSettings.
Документация свойств
autoSipEnabled : bool
переключает автоматическое отображение SIP (панели ввода программного обеспечения)
Установите это свойство в значение true, чтобы автоматически отображать SIP при вводе в виджеты, принимающие ввод с клавиатуры. Это свойство влияет только на виджеты с установленным атрибутом WA_InputMethodEnabled и обычно используется для запуска виртуальной клавиатуры на устройствах с малым количеством или отсутствием физических клавиш.
Это свойство действует только на платформах, использующих панели ввода программного обеспечения.
Значение по умолчанию зависит от платформы.
Функции доступа:
| bool | autoSipEnabled() const |
| void | setAutoSipEnabled(const bool enabled) |
cursorFlashTime : int
Это свойство содержит время мигания курсора в миллисекундах.
Время мигания — это время, необходимое для отображения, инвертирования и восстановления отображения курсора. Обычно курсор отображается половину времени мигания, а затем скрывается на такое же время, но это может варьироваться.
Значение по умолчанию в X11 составляет 1000 миллисекунд. В Windows используется значение из Панели управления, и установка этого свойства устанавливает время мигания курсора для всех приложений.
Рекомендуется, чтобы виджеты не кешировали это значение, так как оно может измениться в любой момент, если пользователь изменит глобальные настройки рабочего стола.
Примечание: это свойство может содержать отрицательное значение, например, если мигание курсора отключено.
Функции доступа:
| int | cursorFlashTime() |
| void | setCursorFlashTime(int) |
doubleClickInterval : int
Это свойство содержит временной лимит в миллисекундах, который отличает двойной щелчок от двух последовательных щелчков мыши.
Значение по умолчанию в X11 — 400 миллисекунд. В Windows и macOS используется значение операционной системы.
Функции доступа:
| int | doubleClickInterval() |
| void | setDoubleClickInterval(int) |
keyboardInputInterval : int
Это свойство содержит временной лимит в миллисекундах, который отличает нажатие клавиши от двух последовательных нажатий клавиш.
Значение по умолчанию в X11 — 400 миллисекунд. В Windows и macOS используется значение операционной системы.
Функции доступа:
| int | keyboardInputInterval() |
| void | setKeyboardInputInterval(int) |
startDragDistance : int
Это свойство содержит минимальное расстояние, необходимое для начала операции перетаскивания.
Если вы поддерживаете перетаскивание в своём приложении и хотите начать операцию перетаскивания после того, как пользователь переместил курсор на определённое расстояние, удерживая нажатой кнопку, вы должны использовать значение этого свойства как минимальное требуемое расстояние.
Например, если положение мыши при нажатии хранится в startPos, а текущее положение (например, в событии перемещения мыши) — в currentPos, вы можете определить, следует ли начинать перетаскивание с помощью такого кода:
if ((startPos - currentPos).manhattanLength() >=
QApplication::startDragDistance())
startTheDrag(); Qt использует это значение во внутреннем режиме, например, в QFileDialog.
Значение по умолчанию (если платформа не предоставляет другое значение по умолчанию) составляет 10 пикселей.
Функции доступа:
| int | startDragDistance() |
| void | setStartDragDistance(int l) |
См. также startDragTime(), QPoint::manhattanLength(), и Перетаскивание и сброс.
startDragTime : int
Это свойство содержит время в миллисекундах, которое кнопка мыши должна быть нажата, прежде чем начнется операция перетаскивания.
Если вы поддерживаете перетаскивание в своём приложении и хотите начать операцию перетаскивания после того, как пользователь удерживал нажатой кнопку мыши в течение определённого времени, вы должны использовать значение этого свойства как задержку.
Qt также использует эту задержку во внутреннем режиме, например, в QTextEdit и QLineEdit, для запуска перетаскивания.
Значение по умолчанию составляет 500 мс.
Функции доступа:
| int | startDragTime() |
| void | setStartDragTime(int ms) |
См. также startDragDistance() и Перетаскивание и сброс.
styleSheet : QString
Это свойство содержит стилевое оформление приложения.
По умолчанию это свойство возвращает пустую строку, если пользователь не указал опцию -stylesheet в командной строке при запуске приложения.
Функции доступа:
| QString | styleSheet() const |
| void | setStyleSheet(const QString &sheet) |
См. также QWidget::setStyle() и Стили Qt.
wheelScrollLines : int
Это свойство содержит количество строк для прокрутки виджета при вращении колесика мыши.
Если значение превышает количество видимых строк виджета, виджет должен интерпретировать операцию прокрутки как единичный скроллинг вверх/вниз. Если виджет является классом виджета элементов, то результат прокрутки на одну строку зависит от настроек режима прокрутки виджета режим прокрутки. Прокрутка на одну строку может означать прокрутку на один элемент или один пиксель.
По умолчанию это свойство имеет значение 3.
Функции доступа:
| int | wheelScrollLines() |
| void | setWheelScrollLines(int) |
См. также QStyleHints::wheelScrollLines().
Документация по членам-функциям
QApplication::QApplication(int &argc, char **argv)
Инициализирует системное окно и создаёт объект приложения с argc аргументами командной строки в argv.
Предупреждение: Данные, на которые ссылаются argc и argv, должны оставаться валидными на протяжении всего жизненного цикла объекта QApplication. Кроме того, argc должно быть больше нуля, а argv — содержать, по крайней мере, одну валидную строку символов.
Глобальный указатель qApp ссылается на этот объект приложения. Должен быть создан только один объект приложения.
Этот объект приложения должен быть создан до создания любых устройств рисования (включая виджеты, пикчи, биты и т. д.).
Примечание: argc и argv могут быть изменены, так как Qt удаляет аргументы командной строки, которые он распознаёт.
Все программы Qt автоматически поддерживают следующие параметры командной строки:
- -style= style, устанавливает стиль графического интерфейса приложения. Возможные значения зависят от конфигурации вашей системы. Если вы скомпилировали Qt с дополнительными стилями или у вас есть дополнительные стили как плагины, они будут доступны в параметре командной строки
-style. Вы также можете установить стиль для всех приложений Qt, установив переменную средыQT_STYLE_OVERRIDE. - -style style, то же самое, что указано выше.
- -stylesheet= stylesheet, устанавливает стилевое оформление приложения styleSheet. Значение должно быть путём к файлу, содержащему стилевое оформление.
Примечание: Относительные URL-адреса в файле стилевого оформления относительны к пути к файлу стилевого оформления.
- -stylesheet stylesheet, то же самое, что указано выше.
- -widgetcount, выводит сообщение отладки в конце о количестве неразрушенных виджетов и максимальном количестве виджетов, существовавших одновременно.
- -reverse, устанавливает направление макета приложения на Qt::RightToLeft
- -qmljsdebugger=, активирует отладчик QML/JS с указанным портом. Значение должно быть в формате порт:1234[,block], где block — необязательно и заставит приложение ждать подключения отладчика.
См. также QCoreApplication::arguments().
[static slot] void QApplication::aboutQt()
Отображает простое диалоговое окно о Qt. Сообщение включает номер версии Qt, используемой приложением.
Это полезно для включения в меню Справка приложения, как показано в примере Меню.
Эта функция является удобным слотом для QMessageBox::aboutQt().
[static slot] void QApplication::closeAllWindows()
Закрывает все окна верхнего уровня.
Эта функция особенно полезна для приложений с множеством окон верхнего уровня.
Окна закрываются в случайном порядке, пока одно из окон не примет событие закрытия. Приложение завершается, когда последнее окно было успешно закрыто, если quitOnLastWindowClosed не установлено в значение false. Чтобы вызвать завершение приложения, например, из меню, используйте QCoreApplication::quit() вместо этой функции.
См. также quitOnLastWindowClosed, lastWindowClosed(), QWidget::close(), QWidget::closeEvent(), lastWindowClosed(), QCoreApplication::quit(), topLevelWidgets() и QWidget::isWindow().
[signal] void QApplication::focusChanged(QWidget *old, QWidget *now)
Этот сигнал излучается, когда виджет, который имеет фокус клавиатуры, изменился с old на now, например, из-за нажатия клавиши Tab, щелчка мышью в виджет или изменения активного окна. Оба old и now могут быть nullptr.
Сигнал излучается после того, как оба виджета были уведомлены об изменении с помощью QFocusEvent.
См. также QWidget::setFocus(), QWidget::clearFocus() и Qt::FocusReason.
[virtual] QApplication::~QApplication()
Очищает все системные ресурсы окон, которые были выделены этим приложением. Устанавливает глобальную переменную qApp в значение nullptr.
[static] QWidget *QApplication::activeModalWidget()
Возвращает активный модальный виджет.
Модальный виджет — это специальный виджет верхнего уровня, который является подклассом QDialog и указывает параметр modal конструктора как true. Модальный виджет должен быть закрыт, прежде чем пользователь сможет продолжить работу с другими частями программы.
Модальные виджеты организованы в стеке. Эта функция возвращает активный модальный виджет вверху стека.
См. также activePopupWidget() и topLevelWidgets().
[static] QWidget *QApplication::activePopupWidget()
Возвращает активный всплывающий виджет.
Всплывающий виджет — это специальный виджет верхнего уровня, который устанавливает флаг виджета Qt::WType_Popup, например, виджет QMenu. Когда приложение открывает всплывающий виджет, все события отправляются в него. К обычным и модальным виджетам нельзя получить доступ, пока всплывающий виджет не будет закрыт.
Только другие всплывающие виджеты могут быть открыты, когда всплывающий виджет показан. Всплывающие виджеты организованы в стеке. Эта функция возвращает активный всплывающий виджет вверху стека.
См. также activeModalWidget() и topLevelWidgets().
[static] QWidget *QApplication::activeWindow()
Возвращает окно приложения верхнего уровня, имеющее фокус ввода с клавиатуры, или nullptr если ни одно окно приложения не имеет фокуса. activeWindow() может быть активным даже без focusWidget(), например, если ни один виджет в окне не принимает события клавиш.
См. также setActiveWindow(), QWidget::setFocus(), QWidget::hasFocus() и focusWidget().
[static] void QApplication::alert(QWidget *widget, int msec = 0)
Вызывает отображение предупреждения для widget, если окно не является активным окном. Предупреждение отображается на протяжении msec миллисекунд. Если msec равно нулю (по умолчанию), то предупреждение отображается неопределённо, пока окно снова не станет активным.
В настоящее время эта функция ничего не делает в Qt for Embedded Linux.
В macOS это работает на уровне приложения и заставит значок приложения мигать в доке.
В Windows это заставит запись окна на панели задач мигать на определённое время. Если msec равно нулю, мигание прекратится, и запись на панели задач изменит цвет (в настоящее время оранжевый).
В X11 это заставит окно быть помеченным как «требующее внимания», окно не должно быть скрыто (т.е. на нём не должно вызываться hide(), но должно быть каким-то образом видно), чтобы это сработало.
[static] QWidgetList QApplication::allWidgets()
Возвращает список всех виджетов в приложении.
Список пуст (QList::isEmpty()), если виджетов нет.
Примечание: Некоторые виджеты могут быть скрыты.
Пример:
void updateAllWidgets()
{
const QWidgetList allWidgets = QApplication::allWidgets();
for (QWidget *widget : allWidgets)
widget->update();
} См. также topLevelWidgets() и QWidget::isVisible().
[static] void QApplication::beep()
Издает звуковой сигнал с использованием стандартного уровня громкости и звука. Функция не доступна в Qt for Embedded Linux.
[override virtual protected] bool QApplication::event(QEvent *e)
Переопределяет: QGuiApplication::event(QEvent *e).
[static] int QApplication::exec()
Входит в основной цикл обработки событий и ожидает вызова exit(), затем возвращает значение, установленное в exit() (которое равно 0, если exit() был вызван через quit()).
Для начала обработки событий необходимо вызвать эту функцию. Основной цикл обработки событий получает события от системы окон и передает их виджетам приложения.
Как правило, никакое взаимодействие с пользователем не может произойти до вызова exec(). В качестве специального случая, модальные виджеты, такие как QMessageBox, могут использоваться до вызова exec(), потому что модальные виджеты вызывают exec() для запуска локального цикла обработки событий.
Для того, чтобы ваше приложение выполняло обработку в режиме ожидания, т.е. выполняло особую функцию всякий раз, когда нет ожидающих событий, используйте QTimer с таймаутом 0. Более сложные схемы обработки в режиме ожидания могут быть реализованы с помощью processEvents().
Рекомендуется подключать код очистки к сигналу aboutToQuit() вместо того, чтобы помещать его в функцию main() вашего приложения. Это связано с тем, что на некоторых платформах вызов QApplication::exec() может не вернуться. Например, на платформе Windows, когда пользователь выходит из системы, система завершает процесс после того, как Qt закрывает все окна верхнего уровня. Поэтому нет гарантии, что приложение успеет выйти из цикла обработки событий и выполнить код в конце функции main(), после вызова QApplication::exec().
См. также quitOnLastWindowClosed, QCoreApplication::quit(), QCoreApplication::exit(), QCoreApplication::processEvents() и QCoreApplication::exec().
[static] QWidget *QApplication::focusWidget()
Возвращает виджет приложения, имеющий фокус ввода с клавиатуры, или nullptr если ни один виджет в этом приложении не имеет фокуса.
См. также QWidget::setFocus(), QWidget::hasFocus(), activeWindow() и focusChanged().
[static] QFont QApplication::font()
Возвращает шрифт по умолчанию для приложения.
См. также setFont(), fontMetrics() и QWidget::font().
[static] QFont QApplication::font(const QWidget *widget)
Это перегруженная функция.
Возвращает шрифт по умолчанию для widget.
См. также fontMetrics() и QWidget::setFont().
[static] QFont QApplication::font(const char *className)
Это перегруженная функция.
Возвращает шрифт для виджетов заданного класса className.
См. также setFont() и QWidget::font().
[static] bool QApplication::isEffectEnabled(Qt::UIEffect effect)
Возвращает true, если effect включен; в противном случае возвращает false.
По умолчанию Qt будет пытаться использовать настройки рабочего стола. Чтобы предотвратить это, вызовите setDesktopSettingsAware(false).
Примечание: Все эффекты отключены на экранах с глубиной цвета менее 16 бит.
См. также setEffectEnabled() и Qt::UIEffect.
[static] Qt::NavigationMode QApplication::navigationMode()
Возвращает способ навигации по фокусу, который использует Qt.
Эта функция доступна только в Qt for Embedded Linux.
См. также setNavigationMode().
[override virtual] bool QApplication::notify(QObject *receiver, QEvent *e)
Реализует: QGuiApplication::notify(QObject *object, QEvent *event).
[static] QPalette QApplication::palette(const QWidget *widget)
Если передан widget, возвращается палитра по умолчанию для класса виджета. Это может быть или не быть палитрой приложения. В большинстве случаев для определенных типов виджетов нет специальной палитры, но одним из заметных исключений является всплывающее меню в Windows, если пользователь определил специальный цвет фона для меню в настройках дисплея.
См. также setPalette() и QWidget::palette().
[static] QPalette QApplication::palette(const char *className)
Это перегруженная функция.
Возвращает палитру для виджетов заданного класса className.
См. также setPalette() и QWidget::palette().
[static] void QApplication::setActiveWindow(QWidget *active)
Устанавливает активным окном виджет active в ответ на системное событие. Функция вызывается из обработчиков событий, специфичных для платформы.
Предупреждение: Эта функция не устанавливает фокус клавиатуры на активный виджет. Используйте вместо этого QWidget::activateWindow().
Она устанавливает атрибуты activeWindow() и focusWidget() и отправляет соответствующие события WindowActivate/WindowDeactivate и FocusIn/FocusOut всем соответствующим виджетам. Окно затем будет отображено в активном состоянии (например, курсоры в строках редактирования будут мигать), и для него будут включены всплывающие подсказки.
См. также activeWindow() и QWidget::activateWindow().
[static] void QApplication::setEffectEnabled(Qt::UIEffect effect, bool enable = true)
Включает визуальный эффект effect, если enable имеет значение true, в противном случае эффект не используется.
Примечание: Все эффекты отключены на экранах с глубиной цвета менее 16 бит.
См. также isEffectEnabled(), Qt::UIEffect и setDesktopSettingsAware().
[static] void QApplication::setFont(const QFont &font, const char *className = nullptr)
Изменяет шрифт по умолчанию приложения на font. Если передан className, изменение применяется только к классам, унаследованным от className (как сообщает QObject::inherits()).
При запуске приложения шрифт по умолчанию зависит от системного окна. Он может меняться в зависимости как от версии системного окна, так и от локали. Эта функция позволяет переопределить шрифт по умолчанию; но переопределение может быть плохой идеей, так как, например, некоторым локалям необходимы дополнительные крупные шрифты для поддержки их специальных символов.
Предупреждение: Не используйте эту функцию совместно с Таблицами стилей Qt. Шрифт приложения можно настроить с помощью свойства таблицы стилей "font". Чтобы установить жирный шрифт для всех QPushButtons, установите свойство styleSheet приложения как "QPushButton { font: bold }"
См. также font(), fontMetrics() и QWidget::setFont().
[static] void QApplication::setNavigationMode(Qt::NavigationMode mode)
Устанавливает тип навигации по фокусу, который Qt должен использовать, на mode.
Эта функция доступна только в Qt for Embedded Linux.
См. также navigationMode().
[static] void QApplication::setPalette(const QPalette &palette, const char *className = nullptr)
Изменяет палитру приложения на palette.
Если передан className, изменение применяется только к виджетам, унаследованным от className (как сообщает QObject::inherits()). Если className оставлен нулевым, изменение затрагивает все виджеты, тем самым переопределяя любые ранее установленные палитры, специфичные для класса.
Палитра может быть изменена в соответствии с текущим стилем графического интерфейса в QStyle::polish().
Предупреждение: Не используйте эту функцию совместно с Таблицами стилей Qt. При использовании таблиц стилей палитра виджета может быть настраиваема с помощью свойств "color", "background-color", "selection-color", "selection-background-color" и "alternate-background-color".
Примечание: Некоторые стили не используют палитру для всего рисования, например, если они используют собственные движки темы. Это характерно для стилей Windows Vista и macOS.
См. также QWidget::setPalette(), palette() и QStyle::polish().
[static] void QApplication::setStyle(QStyle *style)
Устанавливает стиль графического интерфейса приложения на style. Владение объектом стиля передается QApplication, поэтому QApplication удалит объект стиля при выходе из приложения или при установке нового стиля, если старый стиль всё ещё является родителем объекта приложения.
Пример использования:
QApplication::setStyle(QStyleFactory::create("Fusion")); При переключении стилей приложения палитра цветов устанавливается обратно на начальные цвета или значения по умолчанию системы. Это необходимо, так как некоторым стилям нужно адаптировать палитру цветов, чтобы полностью соответствовать руководству по стилю.
Установка стиля до установки палитры, т.е. до создания QApplication, приведет к тому, что приложение будет использовать QStyle::standardPalette() для палитры.
Предупреждение: Таблицы стилей Qt в настоящее время не поддерживаются для пользовательских подклассов QStyle. Мы планируем решить эту проблему в будущей версии.
См. также style(), QStyle, setPalette() и desktopSettingsAware().
[static] QStyle *QApplication::setStyle(const QString &style)
Это перегруженная функция.
Запрашивает объект QStyle для style у QStyleFactory.
Строка должна быть одной из QStyleFactory::keys(), обычно одной из "windows", "windowsvista", "fusion" или "macos". Названия стилей регистронезависимы.
Возвращает nullptr если передан неизвестный style, в противном случае возвращаемый объект QStyle устанавливается как стиль графического интерфейса приложения.
Предупреждение: Чтобы убедиться, что стиль приложения установлен правильно, лучше всего вызвать эту функцию до конструктора QApplication, если это возможно.
[static] QStyle *QApplication::style()
Возвращает объект стиля приложения.
См. также setStyle() и QStyle.
[static] QWidget *QApplication::topLevelAt(const QPoint &point)
Возвращает верхний виджет в заданной point; возвращает nullptr если такого виджета нет.
[static] QWidget *QApplication::topLevelAt(int x, int y)
Это перегруженная функция.
Возвращает верхний виджет в точке (x, y); возвращает 0, если такого виджета нет.
[static] QWidgetList QApplication::topLevelWidgets()
Возвращает список верхних виджетов (окон) в приложении.
Примечание: Некоторые из верхних виджетов могут быть скрыты, например, всплывающая подсказка, если подсказка в данный момент не отображается.
Пример:
void showAllHiddenTopLevelWidgets()
{
const QWidgetList topLevelWidgets = QApplication::topLevelWidgets();
for (QWidget *widget : topLevelWidgets) {
if (widget->isHidden())
widget->show();
}
} См. также allWidgets(), QWidget::isWindow() и QWidget::isHidden().
[static] QWidget *QApplication::widgetAt(const QPoint &point)
Возвращает виджет в глобальной позиции экрана point или nullptr если там нет виджета Qt.
Эта функция может быть медленной.
См. также QCursor::pos(), QWidget::grabMouse() и QWidget::grabKeyboard().
[static] QWidget *QApplication::widgetAt(int x, int y)
Это перегруженная функция.
Возвращает виджет в глобальной позиции экрана (x, y) или nullptr если там нет виджета Qt.
Документация макросов
qApp
Глобальная ссылка, указывающая на уникальный объект приложения. Эквивалентно QCoreApplication::instance(), но отбрасываемая как ссылка на QApplication, поэтому действительна только когда уникальный объект приложения является QApplication.
См. также QCoreApplication::instance() и qGuiApp.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qapplication.html