Spec-Zone.ru › Qt 6.1

Класс QApplication

Класс QApplication управляет потоком управления графического приложения и основными настройками. Подробнее...

Заголовок: #include <QApplication>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Наследуется от: QGuiApplication
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Свойства

  • autoSipEnabled : bool
  • cursorFlashTime : int
  • doubleClickInterval : int
  • keyboardInputInterval : int
  • startDragDistance : int
  • startDragTime : int
  • styleSheet : QString
  • wheelScrollLines : int

Открытые функции

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 выполнение()
QWidget * виджетФокуса()
QFont шрифт()
QFont шрифт(const QWidget *widget)
QFont шрифт(const char *className)
bool эффектВключен(Qt::UIEffect effect)
int интервалВводаСКлавиатуры()
Qt::NavigationMode режимНавигации()
QPalette палитра(const QWidget *widget)
QPalette палитрa(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

Макросы

приложение

Подробное описание

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(), которая возвращает указатель, эквивалентный глобальному указателю приложение.

Основные области ответственности QApplication:

  • Она инициализирует приложение настройками рабочего стола пользователя, такими как палитрa(), шрифт() и интервалДвойногоЩелчка. Она отслеживает эти свойства на случай, если пользователь глобально изменит настройки рабочего стола, например, через какое-либо средство управления.
  • Она выполняет обработку событий, что означает, что она получает события от базовой системы окон и распределяет их соответствующим виджетам. Используя sendEvent() и postEvent(), вы можете отправлять свои собственные события виджетам.
  • Она анализирует общие аргументы командной строки и соответственно устанавливает свое внутреннее состояние. Подробнее см. в документации конструктора ниже.
  • Она определяет вид внешнего вида приложения, который инкапсулирован в объекте QStyle. Это можно изменить во время выполнения с помощью установитьСтиль().
  • Она обеспечивает локализации строк, отображаемых пользователю, через translate().
  • Она предоставляет некоторые магические объекты, такие как clipboard().
  • Она знает о окнах приложения. Вы можете узнать, какой виджет находится в определённой позиции, используя видетВТочке(), получить список видетыВерхнегоУровня() и closeAllWindows() и т. д.
  • Она управляет обработкой курсора мыши приложения, см. 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 и Mac OS используется значение операционной системы.

Функции доступа:

int doubleClickInterval()
void setDoubleClickInterval(int)

keyboardInputInterval : int

Это свойство содержит временной лимит в миллисекундах, который отличает нажатие клавиши от двух последовательных нажатий клавиш

Значение по умолчанию в X11 — 400 миллисекунд. В Windows и Mac OS используется значение операционной системы.

Функции доступа:

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 с указанным портом. Значение должно иметь формат port: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 для 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 для 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. Если шрифт по умолчанию не был зарегистрирован для класса widget, возвращается шрифт по умолчанию ближайшего зарегистрированного суперкласса.

См. также fontMetrics(), setFont() и 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 для 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 для Embedded Linux.

См. также navigationMode().

[static] void QApplication::setPalette(const QPalette &palette, const char *className = nullptr)

Изменяет палитру приложения на palette.

Если передан className, изменение применяется только к виджетам, которые наследуют от className (как сообщает QObject::inherits()). Если className оставлен 0, изменение влияет на все виджеты, тем самым переопределяя любые ранее заданные палитры для классов.

Палитра может изменяться в соответствии с текущим стилем графического интерфейса в QStyle::polish().

Предупреждение: Не используйте эту функцию совместно с Qt Style Sheets. При использовании стилей, палитру виджета можно настраивать с помощью свойств "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.1/qapplication.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API