Spec-Zone.ru › Qt

Класс 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 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(), получить список topLevelWidgets() и 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 приложения. Значение должно быть путём к файлу, который содержит стиль.
  • -stylesheet stylesheet, эквивалентно вышеперечисленному.
  • -widgetcount, выводит сообщение отладки в конце о количестве оставшихся не уничтоженных виджетов и максимальном количестве существовавших одновременно виджетов
  • -reverse, устанавливает направление макета приложения в Qt::RightToLeft
  • -qmljsdebugger=, активирует отладчик QML/JS со указанным портом. Значение должно иметь формат port:1234[,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 для встроенной 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 для встроенной 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 Style Sheets. Шрифт приложения можно настроить с помощью свойства "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 опущен, изменение коснется всех виджетов, тем самым переопределяя ранее установленные палитры для отдельных классов.

Палитра может изменяться в соответствии с текущим стилем GUI в 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() для палитры.

Предупреждение: В настоящее время пользовательские подклассы QStyle не поддерживаются для таблиц стилей Qt. Мы планируем решить эту проблему в будущей версии.

См. также 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.2/qapplication.html

Spec-Zone.ru

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