Spec-Zone.ru › Qt 5.6

Класс QCoreApplication

Класс QCoreApplication предоставляет цикл обработки событий для приложений Qt без графического интерфейса. Подробнее...

Заголовок: #include <QCoreApplication>
qmake: QT += core
Наследуется от: QObject
Наследует:

QGuiApplication

  • Список всех членов, включая наследуемые
  • Устаревшие члены

Свойства

  • applicationName : QString
  • applicationVersion : QString
  • organizationDomain : QString
  • organizationName : QString
  • quitLockEnabled : bool
  • 1 свойство унаследовано от QObject

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

QCoreApplication(int &argc, char **argv)
~QCoreApplication()
void installNativeEventFilter(QAbstractNativeEventFilter *filterObj)
virtual bool notify(QObject *receiver, QEvent *event)
void removeNativeEventFilter(QAbstractNativeEventFilter *filterObject)
  • 31 открытая функция унаследована от QObject

Открытые слоты

void quit()
  • 1 открытый слот унаследован от QObject

Сигналы

void aboutToQuit()
  • 2 сигнала унаследованы от QObject

Статические открытые члены

void addLibraryPath(const QString &path)
QString applicationDirPath()
QString applicationFilePath()
QString applicationName()
qint64 applicationPid()
QString applicationVersion()
QStringList arguments()
bool closingDown()
QAbstractEventDispatcher * eventDispatcher()
int exec()
void exit(int returnCode = 0)
void flush()
bool installTranslator(QTranslator *translationFile)
QCoreApplication * instance()
bool isQuitLockEnabled()
bool isSetuidAllowed()
QStringList libraryPaths()
QString organizationDomain()
QString organizationName()
void postEvent(QObject *receiver, QEvent *event, int priority = Qt::NormalEventPriority)
void processEvents(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents)
void processEvents(QEventLoop::ProcessEventsFlags flags, int maxtime)
void removeLibraryPath(const QString &path)
void removePostedEvents(QObject *receiver, int eventType = 0)
bool removeTranslator(QTranslator *translationFile)
bool sendEvent(QObject *receiver, QEvent *event)
void sendPostedEvents(QObject *receiver = Q_NULLPTR, int event_type = 0)
void setApplicationName(const QString &application)
void setApplicationVersion(const QString &version)
void setAttribute(Qt::ApplicationAttribute attribute, bool on = true)
void setEventDispatcher(QAbstractEventDispatcher *eventDispatcher)
void setLibraryPaths(const QStringList &paths)
void setOrganizationDomain(const QString &orgDomain)
void setOrganizationName(const QString &orgName)
void setQuitLockEnabled(bool enabled)
void setSetuidAllowed(bool allow)
bool startingUp()
bool testAttribute(Qt::ApplicationAttribute attribute)
QString translate(const char *context, const char *sourceText, const char *disambiguation = Q_NULLPTR, int n = -1)
  • 11 статических публичных методов, унаследованных от QObject

Реализованные защищенные функции

virtual bool event(QEvent *e)
  • 9 защищенных функций, унаследованных от QObject

Связанные нечлены

void qAddPostRoutine(QtCleanUpFunction ptr)
void qRemovePostRoutine(QtCleanUpFunction ptr)

Макросы

Q_COREAPP_STARTUP_FUNCTION(QtStartUpFunction ptr)
Q_DECLARE_TR_FUNCTIONS(context)

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

Класс QCoreApplication предоставляет цикл обработки событий для приложений Qt без графического интерфейса.

Этот класс используется в неграфических приложениях для обеспечения цикла обработки событий. Для неграфического приложения, использующего Qt, должен быть ровно один объект QCoreApplication. Для графических приложений см. QGuiApplication. Для приложений, использующих модуль Qt Widgets, см. QApplication.

QCoreApplication содержит основной цикл обработки событий, где обрабатываются и рассылаются все события из операционной системы (например, таймеры и сетевые события) и другие источники. Он также обрабатывает инициализацию и завершение приложения, а также системные и прикладные настройки.

Цикл обработки событий и обработка событий

Цикл обработки событий запускается вызовом exec(). При длительных операциях можно вызвать processEvents(), чтобы приложение оставалось отзывчивым.

В целом, рекомендуется создавать объект QCoreApplication, QGuiApplication или QApplication в вашей функции main() как можно раньше. exec() не вернётся до тех пор, пока цикл обработки событий не завершится; например, когда вызывается quit().

Также предоставляются несколько статических удобных функций. Объект QCoreApplication доступен через instance(). События можно отправлять или публиковать с помощью sendEvent(), postEvent() и sendPostedEvents(). Ожидающие события можно удалить с помощью removePostedEvents() или очистить с помощью flush().

END_OF_DOCUMENT_MARKER

Класс предоставляет слот quit() и сигнал aboutToQuit().

Пути приложения и библиотек

Приложение имеет путь к каталогу приложения applicationDirPath() и путь к файлу приложения applicationFilePath(). Пути к библиотекам (см. QLibrary) можно получить с помощью libraryPaths() и изменить с помощью setLibraryPaths(), addLibraryPath() и removeLibraryPath().

Локализация и переводы

Файлы переводов можно добавлять или удалять, используя installTranslator() и removeTranslator(). Строки приложения можно перевести, используя translate(). Функции QObject::tr() и QObject::trUtf8() реализованы на основе translate().

Доступ к аргументам командной строки

Аргументы командной строки, передаваемые конструктору QCoreApplication, должны быть получены с помощью функции arguments().

Примечание: QCoreApplication удаляет опцию -qmljsdebugger="...". Он анализирует аргумент qmljsdebugger, а затем удаляет эту опцию вместе с её аргументом.

Для более сложной обработки параметров командной строки используйте QCommandLineParser.

Параметры локали

В Qt на Unix/Linux по умолчанию используются параметры локали системы. Это может привести к конфликту при использовании функций POSIX, например, при преобразовании между типами данных, такими как float и строки, так как запись может отличаться в разных локалях. Чтобы обойти эту проблему, вызовите функцию POSIX setlocale(LC_NUMERIC,"C") сразу после инициализации QApplication, QGuiApplication или QCoreApplication, чтобы сбросить формат чисел на локаль "C".

См. также QGuiApplication, QAbstractEventDispatcher, QEventLoop, Пример с семафорами и Пример с условиями ожидания.

Документация по свойствам

applicationName : QString

Это свойство содержит имя этого приложения.

Значение используется классом QSettings при создании с пустым конструктором. Это позволяет избежать повторения этой информации каждый раз при создании объекта QSettings.

Если не задано, имя приложения по умолчанию равно имени исполняемого файла (с версии 5.0).

На BlackBerry это свойство является только для чтения. Оно извлекается из файла описания приложения BAR.

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

QString applicationName()
void setApplicationName(const QString &application)

См. также organizationName, organizationDomain, applicationVersion и applicationFilePath().

applicationVersion : QString

Это свойство содержит версию этого приложения.

На BlackBerry это свойство является только для чтения. Оно извлекается из файла описания приложения BAR.

Это свойство было добавлено в Qt 4.4.

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

QString applicationVersion()
void setApplicationVersion(const QString &version)

См. также applicationName, organizationName и organizationDomain.

organizationDomain : QString

Это свойство содержит домен в интернете организации, которая написала это приложение.

Значение используется классом QSettings при создании с пустым конструктором. Это позволяет избежать повторения этой информации каждый раз при создании объекта QSettings.

На Mac, QSettings использует organizationDomain() в качестве организации, если это не пустая строка; в противном случае используется organizationName(). На всех других платформах QSettings использует organizationName() в качестве организации.

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

QString organizationDomain()
void setOrganizationDomain(const QString &orgDomain)

См. также organizationName, applicationName и applicationVersion.

organizationName : QString

Это свойство содержит имя организации, которая написала это приложение.

Значение используется классом QSettings при создании с пустым конструктором. Это позволяет избежать повторения этой информации каждый раз при создании объекта QSettings.

На Mac, QSettings использует organizationDomain() в качестве организации, если это не пустая строка; в противном случае используется organizationName(). На всех других платформах QSettings использует organizationName() в качестве организации.

На BlackBerry это свойство является только для чтения. Оно извлекается из файла описания приложения BAR.

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

QString organizationName()
void setOrganizationName(const QString &orgName)

См. также organizationDomain и applicationName.

quitLockEnabled : bool

Это свойство указывает, может ли использование QEventLoopLocker привести к завершению приложения.

Значение по умолчанию true.

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

bool isQuitLockEnabled()
void setQuitLockEnabled(bool enabled)

См. также QEventLoopLocker.

Документация по функциям-членам

QCoreApplication::QCoreApplication(int &argc, char **argv)

Создает приложение ядра Qt. Приложения ядра — это приложения без графического интерфейса пользователя. Такие приложения используются в консоли или в качестве процессов сервера.

Аргументы argc и argv обрабатываются приложением и становятся доступными в более удобной форме с помощью функции arguments().

Предупреждение: Данные, на которые ссылаются argc и argv, должны оставаться валидными на протяжении всего жизненного цикла объекта QCoreApplication. Кроме того, argc должно быть больше нуля, а argv — содержать по крайней мере одну валидную строку символов.

QCoreApplication::~QCoreApplication()

Уничтожает объект QCoreApplication.

[signal] void QCoreApplication::aboutToQuit()

Этот сигнал испускается, когда приложение собирается выйти из основного цикла обработки событий, например, когда уровень цикла обработки событий становится нулевым. Это может произойти либо после вызова quit() внутри приложения, либо при выключении всей сессии рабочего стола.

Сигнал особенно полезен, если вашему приложению требуется выполнить некоторую завершающую очистку. Обратите внимание, что в этом состоянии взаимодействие с пользователем невозможно.

Примечание: Это частный сигнал. Он может быть использован в соединениях сигналов, но не может быть испущен пользователем.

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

[static] void QCoreApplication::addLibraryPath(const QString &path)

Добавляет path в начало списка путей к библиотекам, гарантируя, что он будет проверяться в первую очередь. Если path пустая или уже есть в списке путей, список путей не изменяется.

Список путей по умолчанию содержит один элемент — каталог установки плагинов. По умолчанию каталог установки плагинов — INSTALL/plugins, где INSTALL — каталог установки Qt.

Пути к библиотекам сбрасываются до значений по умолчанию при уничтожении экземпляра QCoreApplication.

См. также removeLibraryPath(), libraryPaths(), и setLibraryPaths().

[static] QString QCoreApplication::applicationDirPath()

Возвращает директорию, содержащую исполняемый файл приложения.

Например, если Qt установлен в директории C:\Qt, и вы запускаете пример regexp, эта функция вернёт "C:/Qt/examples/tools/regexp".

В macOS и iOS эта функция укажет на директорию, фактически содержащую исполняемый файл, которая может находиться внутри пакета приложения (если приложение упаковано).

Предупреждение: В Linux эта функция попытается получить путь из /proc файловой системы. Если это не удастся, она предположит, что argv[0] содержит абсолютный путь к исполняемому файлу. Функция также предполагает, что текущая директория не была изменена приложением.

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

[static] QString QCoreApplication::applicationFilePath()

Возвращает путь к исполняемому файлу приложения.

Например, если Qt установлен в директории /usr/local/qt, и вы запускаете пример regexp, эта функция вернёт "/usr/local/qt/examples/tools/regexp/regexp".

Предупреждение: В Linux эта функция попытается получить путь из /proc файловой системы. Если это не удастся, она предположит, что argv[0] содержит абсолютный путь к исполняемому файлу. Функция также предполагает, что текущая директория не была изменена приложением.

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

[static] qint64 QCoreApplication::applicationPid()

Возвращает идентификатор текущего процесса приложения.

Эта функция была введена в Qt 4.4.

[static] QStringList QCoreApplication::arguments()

Возвращает список аргументов командной строки.

Обычно arguments().at(0) — это имя программы, arguments().at(1) — первый аргумент, а arguments().last() — последний аргумент. См. примечание ниже о Windows.

Вызов этой функции медленный — при обработке командной строки результат следует сохранять в переменной.

Предупреждение: В Unix этот список создаётся из параметров argc и argv, переданных конструктору в функции main(). Строковые данные в argv интерпретируются с помощью QString::fromLocal8Bit(); поэтому, например, передача японских аргументов командной строки на системе с локалью Latin1 невозможна. Большинство современных систем Unix не имеют этого ограничения, так как они основаны на Unicode.

В Windows список создаётся из параметров argc и argv только если изменённые параметры argv/argc переданы в конструктор. В этом случае могут возникнуть проблемы с кодировкой.

В противном случае аргументы arguments() строятся из возвращаемого значения GetCommandLine(). В результате этого строка, возвращаемая arguments().at(0), может не быть именем программы в Windows, в зависимости от того, как было запущено приложение.

Эта функция была введена в Qt 4.1.

См. также applicationFilePath() и QCommandLineParser.

[static] bool QCoreApplication::closingDown()

Возвращает true, если объекты приложения уничтожаются; в противном случае возвращает false.

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

[virtual protected] bool QCoreApplication::event(QEvent *e)

Переопределено из QObject::event().

[static] QAbstractEventDispatcher *QCoreApplication::eventDispatcher()

Возвращает указатель на объект диспетчера событий для основного потока. Если для потока нет диспетчера событий, функция возвращает 0.

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

[static] int QCoreApplication::exec()

Входит в основной цикл обработки событий и ожидает, пока не будет вызвано exit(). Возвращает значение, переданное в exit() (которое равно 0, если exit() вызвано через quit()).

Для начала обработки событий необходимо вызвать эту функцию. Основной цикл обработки событий получает события от системного окна и направляет их виджетам приложения.

Чтобы ваше приложение выполняло обработку в моменты бездействия (путем выполнения специальной функции всякий раз, когда нет ожидающих событий), используйте QTimer с таймаутом 0. Более продвинутые схемы обработки в моменты бездействия могут быть реализованы с помощью processEvents().

Рекомендуется подключать код очистки к сигналу aboutToQuit(), вместо того, чтобы помещать его в функцию main() вашего приложения, так как на некоторых платформах вызов exec() может не возвращаться. Например, в Windows, когда пользователь выходит из системы, система завершает процесс после того, как Qt закрывает все окна верхнего уровня. Следовательно, нет гарантии, что приложение успеет выйти из цикла обработки событий и выполнить код в конце функции main() после вызова exec().

См. также quit(), exit(), processEvents() и QApplication::exec().

[static] void QCoreApplication::exit(int returnCode = 0)

Указывает приложению выйти с кодом возврата.

После вызова этой функции приложение покидает основной цикл обработки событий и возвращается из вызова exec(). Функция exec() возвращает returnCode. Если цикл обработки событий не запущен, эта функция ничего не делает.

По соглашению, returnCode со значением 0 означает успех, а любое ненулевое значение указывает на ошибку.

Обратите внимание, что в отличие от одноимённой функции C-библиотеки, эта функция возвращает управление вызывающей программе — прекращается обработка событий.

См. также quit() и exec().

[static] void QCoreApplication::flush()

Очищает платформенно-специфичные очереди событий.

Если вы производите графические изменения внутри цикла, который не возвращается в цикл обработки событий на асинхронных системных окнах, таких как X11, или на оконных системах с двойным буферизацией, как Quartz (macOS и iOS), и хотите немедленно визуализировать эти изменения (например, всплывающие экраны), вызовите эту функцию.

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

void QCoreApplication::installNativeEventFilter(QAbstractNativeEventFilter *filterObj)

Устанавливает фильтр событий filterObj для всех событий, получаемых приложением в основном потоке.

Фильтр событий filterObj получает события через свою функцию nativeEventFilter(), которая вызывается для всех событий, получаемых в основном потоке.

Функция QAbstractNativeEventFilter::nativeEventFilter() должна возвращать true, если событие должно быть отфильтровано, т.е. остановлено. Она должна возвращать false, чтобы позволить стандартной обработке Qt продолжить: нативное событие затем может быть преобразовано в QEvent и обработано стандартным Qt-фильтром событий, например, QObject::installEventFilter().

Если установлено несколько фильтров событий, фильтр, установленный последним, активируется первым.

Примечание: Функция фильтра здесь получает нативные сообщения, т.е. структуры MSG или XCB.

Примечание: Нативные фильтры событий будут отключены в приложении, когда установлено атрибут Qt::AA_MacPluginApplication.

Для максимальной переносимости всегда следует пытаться использовать QEvent и QObject::installEventFilter(), когда это возможно.

Эта функция была введена в Qt 5.0.

См. также QObject::installEventFilter().

[static] bool QCoreApplication::installTranslator(QTranslator *translationFile)

Добавляет файл перевода translationFile в список файлов переводов, которые будут использоваться для переводов.

Можно установить несколько файлов переводов. Переводы ищутся в обратном порядке установки, поэтому файл перевода, установленный последним, ищется первым, а первый установленный файл перевода ищется последним. Поиск останавливается, как только найден перевод, содержащий соответствующую строку.

Установка или удаление QTranslator или изменение установленного QTranslator генерирует событие LanguageChange для экземпляра QCoreApplication. Экземпляр QGuiApplication распространит событие на все окна верхнего уровня, где переопределение changeEvent может перевести пользовательский интерфейс путём передачи видимых пользователю строк через функцию tr() соответствующим установщикам свойств. Классы пользовательского интерфейса, сгенерированные Qt Designer, предоставляют функцию retranslateUi() для вызова.

Функция возвращает true при успехе и false при неудаче.

См. также removeTranslator(), translate(), QTranslator::load() и Динамический перевод.

[static] QCoreApplication *QCoreApplication::instance()

Возвращает указатель на экземпляр QCoreApplication (или QGuiApplication/QApplication) приложения.

Если ни один экземпляр не был выделен, возвращается null.

[static] bool QCoreApplication::isSetuidAllowed()

Возвращает true, если приложение может запускаться с правами setuid на платформах UNIX.

Эта функция была добавлена в Qt 5.3.

См. также QCoreApplication::setSetuidAllowed().

[static] QStringList QCoreApplication::libraryPaths()

Возвращает список путей, которые приложение будет искать при динамической загрузке библиотек.

Возвращаемое значение этой функции может изменяться при создании QCoreApplication. Не рекомендуется вызывать её до создания QCoreApplication. Директория исполняемого файла приложения (не текущая рабочая директория) входит в список, если она известна. Для того, чтобы она стала известной, необходимо создать QCoreApplication, так как он будет использовать argv[0] для её поиска.

Qt предоставляет стандартные пути к библиотекам, но их также можно задать с помощью файла qt.conf. Пути, указанные в этом файле, переопределят значения по умолчанию. Обратите внимание, что если файл qt.conf находится в директории исполняемого файла приложения, он может не быть найден до создания QCoreApplication. Если он не найден при вызове этой функции, будут использованы стандартные пути к библиотекам.

Список будет включать в себя каталог установки плагинов, если он существует (стандартный каталог установки плагинов — INSTALL/plugins, где INSTALL — каталог установки Qt). Разделенные двоеточием записи переменной среды QT_PLUGIN_PATH всегда добавляются. Директория установки плагинов (и её существование) может измениться, когда станет известна директория исполняемого файла приложения.

Если вы хотите пройтись по списку, можете использовать псевдо-ключевое слово foreach:

foreach (const QString &path, app.libraryPaths())
    do_something(path);

См. также setLibraryPaths(), addLibraryPath(), removeLibraryPath(), QLibrary и Как создать плагины Qt.

[virtual] bool QCoreApplication::notify(QObject *receiver, QEvent *event)

Отправляет event объекту receiver: receiver->event(event). Возвращает значение, возвращаемое обработчиком событий получателя. Обратите внимание, что эта функция вызывается для всех событий, отправляемых любому объекту в любом потоке.

Для определенных типов событий (например, событий мыши и клавиатуры) событие будет распространено на родительский объект получателя и так далее до верхнего уровня объекта, если получатель не заинтересован в событии (то есть он возвращает false).

Существует пять способов обработки событий; переопределение этой виртуальной функции — всего лишь один из них. Все пять подходов перечислены ниже:

  1. Переопределение paintEvent(), mousePressEvent() и т. д. Это наиболее распространенный, самый простой и наименее мощный способ.
  2. Переопределение этой функции. Это очень мощный способ, предоставляющий полный контроль; но одновременно активен только один подкласс.
  3. Установка фильтра событий на QCoreApplication::instance(). Такой фильтр событий может обрабатывать все события для всех виджетов, поэтому он столь же мощный, как и переопределение notify(); кроме того, можно иметь более одного глобального фильтра событий приложения. Глобальные фильтры событий видят даже события мыши для выключенных виджетов. Обратите внимание, что фильтры событий приложения вызываются только для объектов, живущих в основном потоке.
  4. Переопределение QObject::event() (как у QWidget). Если вы это сделаете, вы получите нажатия клавиши Tab, и вы увидите события до любого виджета-специфичного фильтра событий.
  5. Установка фильтра событий на объекте. Такой фильтр событий получает все события, включая нажатия клавиш Tab и Shift+Tab, пока они не изменят фокусированный виджет.

Направление развития: в Qt 6 эта функция не будет вызываться для объектов, живущих вне основного потока. Приложения, которым нужна эта функциональность, должны найти другие решения для своих потребностей в инспекции событий в это время. Изменения могут быть распространены на основной поток, что приведет к устареванию этой функции.

Предупреждение: если вы переопределите эту функцию, вы должны убедиться, что все потоки, обрабатывающие события, остановятся до начала уничтожения объекта вашего приложения. Это включает потоки, запущенные другими библиотеками, которые вы можете использовать, но не относится к собственным потокам Qt.

См. также QObject::event() и installNativeEventFilter().

[static] void QCoreApplication::postEvent(QObject *receiver, QEvent *event, int priority = Qt::NormalEventPriority)

Добавляет событие event с объектом receiver в качестве получателя события в очередь событий и возвращает немедленно.

Событие должно быть выделено в куче, поскольку очередь событий post event возьмет на себя владение событием и удалит его, как только оно будет опубликовано. Доступ к событию после публикации небезопасен.

Когда управление возвращается в основной цикл обработки событий, все события, хранящиеся в очереди, будут отправляться с помощью функции notify().

События сортируются в порядке убывания priority, т. е. события с высоким priority в очереди раньше, чем события с низким priority. priority может быть любым целым числом, т. е. от INT_MAX до INT_MIN включительно; см. Qt::EventPriority для получения дополнительной информации. События с одинаковым priority будут обрабатываться в порядке публикации.

Примечание: Эта функция безопасна для многопоточности.

Эта функция была добавлена в Qt 4.3.

См. также sendEvent(), notify(), sendPostedEvents() и Qt::EventPriority.

[static] void QCoreApplication::processEvents(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents)

Обрабатывает все ожидающие события для вызывающего потока в соответствии с заданными flags, пока не будут обработаны все события.

Вы можете вызывать эту функцию время от времени, когда ваша программа выполняет длительную операцию (например, копирование файла).

В случае, если вы запускаете локальный цикл, который непрерывно вызывает эту функцию без цикла событий, события DeferredDelete не будут обрабатываться. Это может повлиять на поведение виджетов, например, QToolTip, которые полагаются на события DeferredDelete для правильной работы. Альтернативой было бы вызов sendPostedEvents() внутри этого локального цикла.

Вызов этой функции обрабатывает события только для вызывающего потока.

Примечание: Эта функция безопасна для многопоточности.

См. также exec(), QTimer, QEventLoop::processEvents(), flush() и sendPostedEvents().

[static] void QCoreApplication::processEvents(QEventLoop::ProcessEventsFlags flags, int maxtime)

Эта функция перегружает processEvents().

Обрабатывает ожидающие события для вызывающего потока в течение maxtime миллисекунд или до тех пор, пока не останется больше событий для обработки, в зависимости от того, что произойдет раньше.

Вы можете вызывать эту функцию время от времени, когда ваша программа выполняет длительную операцию (например, копирование файла).

Вызов этой функции обрабатывает события только для вызывающего потока.

Примечание: Эта функция безопасна для многопоточности.

См. также exec(), QTimer и QEventLoop::processEvents().

[static slot] void QCoreApplication::quit()

Заставляет приложение завершиться с кодом возврата 0 (успешно). Эквивалентно вызову QCoreApplication::exit(0).

Часто сигнал QGuiApplication::lastWindowClosed() подключается к quit(), а также часто подключаются, например, QAbstractButton::clicked() или сигналы в QAction, QMenu или QMenuBar к нему.

Пример:

QPushButton *quitButton = new QPushButton("Quit");
connect(quitButton, SIGNAL(clicked()), &app, SLOT(quit()));

См. также exit(), aboutToQuit() и QGuiApplication::lastWindowClosed().

[static] void QCoreApplication::removeLibraryPath(const QString &path)

Удаляет path из списка путей к библиотекам. Если path пустая или отсутствует в списке путей, список не изменяется.

Пути к библиотекам сбрасываются до значений по умолчанию при уничтожении экземпляра QCoreApplication.

См. также addLibraryPath(), libraryPaths() и setLibraryPaths().

void QCoreApplication::removeNativeEventFilter(QAbstractNativeEventFilter *filterObject)

Удаляет событие filterObject из этого объекта. Запрос игнорируется, если такой фильтр событий не установлен.

Все фильтры событий для этого объекта автоматически удаляются при уничтожении этого объекта.

Удаление фильтра событий всегда безопасно, даже во время активации фильтра событий (например, из функции nativeEventFilter()).

Функция была добавлена в Qt 5.0.

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

[static] void QCoreApplication::removePostedEvents(QObject *receiver, int eventType = 0)

Удаляет все события заданного типа eventType, которые были размещены с помощью postEvent() для receiver.

События не обрабатываются, а вместо этого удаляются из очереди. Вам никогда не понадобится вызывать эту функцию. Если вы её вызовете, знайте, что удаление событий может привести к нарушению одного или нескольких инвариантов receiver.

Если receiver равно null, события типа eventType удаляются для всех объектов. Если eventType равно 0, все события удаляются для receiver. Вы никогда не должны вызывать эту функцию с eventType равным 0. Если вы её вызовете, знайте, что удаление событий может привести к нарушению одного или нескольких инвариантов receiver.

Примечание: Эта функция потокобезопасна.

Функция была добавлена в Qt 4.3.

[static] bool QCoreApplication::removeTranslator(QTranslator *translationFile)

Удаляет файл перевода translationFile из списка файлов переводов, используемых этим приложением. (Он не удаляет файл перевода из файловой системы.)

Функция возвращает true при успехе и false при ошибке.

См. также installTranslator(), translate() и QObject::tr().

[static] bool QCoreApplication::sendEvent(QObject *receiver, QEvent *event)

Отправляет событие event напрямую получателю receiver, используя функцию notify(). Возвращает значение, возвращённое обработчиком события.

Событие не удаляется после отправки. Обычно событие создаётся в стеке, например:

QMouseEvent event(QEvent::MouseButtonPress, pos, 0, 0, 0);
QApplication::sendEvent(mainWindow, &event);

См. также postEvent() и notify().

[static] void QCoreApplication::sendPostedEvents(QObject *receiver = Q_NULLPTR, int event_type = 0)

Немедленно отправляет все события, которые были предварительно поставлены в очередь с помощью QCoreApplication::postEvent() и которые предназначены для объекта receiver и имеют тип события event_type.

События из системного окна не отправляются этой функцией, а функцией processEvents().

Если receiver равно null, события типа event_type отправляются для всех объектов. Если event_type равно 0, все события отправляются для receiver.

Примечание: Этот метод должен вызываться из потока, в котором находится его параметр QObject, receiver.

См. также flush() и postEvent().

[static] void QCoreApplication::setAttribute(Qt::ApplicationAttribute attribute, bool on = true)

Устанавливает атрибут attribute, если on равно true; в противном случае очищает атрибут.

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

[static] void QCoreApplication::setEventDispatcher(QAbstractEventDispatcher *eventDispatcher)

Устанавливает диспетчер событий для основного потока в eventDispatcher. Это возможно только до тех пор, пока диспетчер событий ещё не установлен. То есть, до создания экземпляра QCoreApplication. Этот метод принимает владение объектом.

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

[static] void QCoreApplication::setLibraryPaths(const QStringList &paths)

Устанавливает список каталогов для поиска при загрузке библиотек в paths. Все существующие пути будут удалены, и список путей будет состоять из путей, указанных в paths.

Пути к библиотекам сбрасываются до значений по умолчанию при уничтожении экземпляра QCoreApplication.

См. также libraryPaths(), addLibraryPath(), removeLibraryPath() и QLibrary.

[static] void QCoreApplication::setSetuidAllowed(bool allow)

Разрешает приложению запуск setuid на платформах UNIX, если allow равно true.

Если allow равно false (значение по умолчанию) и Qt обнаруживает, что приложение запущено с эффективным идентификатором пользователя, отличным от реального идентификатора пользователя, приложение будет прервано при создании экземпляра QCoreApplication.

Qt не является подходящим решением для программ setuid из-за большой площади атаки. Однако некоторые приложения могут потребоваться для работы в таком режиме по историческим причинам. Этот флаг предотвратит прерывание приложения Qt при обнаружении этого, и должен быть установлен до создания экземпляра QCoreApplication.

Примечание: Сильно рекомендуется не включать этот параметр, так как он вносит риски безопасности.

Функция была добавлена в Qt 5.3.

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

[static] bool QCoreApplication::startingUp()

Возвращает true , если объект приложения ещё не создан; в противном случае возвращает false.

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

[static] bool QCoreApplication::testAttribute(Qt::ApplicationAttribute attribute)

Возвращает true , если атрибут attribute установлен; в противном случае возвращает false.

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

[static] QString QCoreApplication::translate(const char *context, const char *sourceText, const char *disambiguation = Q_NULLPTR, int n = -1)

Возвращает текст перевода для sourceText, запросив установленные файлы переводов. Файлы переводов ищутся от последнего установленного файла к первому.

QObject::tr() предоставляет эту функциональность более удобно.

context обычно является именем класса (например, "MyDialog"), а sourceText — либо текст на английском языке, либо короткий идентифицирующий текст.

disambiguation — это идентифицирующая строка, для случаев, когда тот же sourceText используется в разных ролях в рамках одного контекста. По умолчанию он равен null.

См. документацию QTranslator и QObject::tr() для получения дополнительной информации о контекстах, разьяснениях и комментариях.

n используется в сочетании с %n для поддержки множественных форм. Подробности см. в QObject::tr().

Если ни один из файлов переводов не содержит перевод для sourceText в context, эта функция возвращает QString, эквивалентный sourceText.

Эта функция не виртуальная. Вы можете использовать альтернативные методы перевода, создав подкласс QTranslator.

Предупреждение: Этот метод реентерабелен только если все переводчики установлены до вызова этого метода. Установка или удаление переводчиков во время выполнения переводов не поддерживается. Это скорее всего приведёт к сбоям или другому нежелательному поведению.

Примечание: Эта функция реентерабельна.

См. также QObject::tr() и installTranslator().

END_OF_DOCUMENT_MARKER

Связанные нечлены

void qAddPostRoutine(QtCleanUpFunction ptr)

Добавляет глобальную процедуру, которая будет вызвана из деструктора QCoreApplication. Эта функция обычно используется для добавления процедур очистки для функциональности всего приложения.

Процедуры очистки вызываются в обратном порядке их добавления.

Функция, задаваемая параметром ptr, не должна принимать аргументов и не должна возвращать значение. Например:

static int *global_ptr = 0;

static void cleanup_ptr()
{
    delete [] global_ptr;
    global_ptr = 0;
}

void init_ptr()
{
    global_ptr = new int[100];      // allocate data
    qAddPostRoutine(cleanup_ptr);   // delete later
}

Обратите внимание, что для очистки приложения или модуля qaddPostRoutine() часто не подходит. Например, если программа разделена на динамически загружаемые модули, соответствующий модуль может быть загружен до того, как вызывается деструктор QCoreApplication. В таких случаях, если использование qaddPostRoutine() всё ещё желательно, qRemovePostRoutine() можно использовать для предотвращения вызова процедуры деструктором QCoreApplication. Например, если эта процедура была вызвана до разгрузки модуля.

Для модулей и библиотек использование менеджера инициализации с подсчётом ссылок или механизма удаления родитель-ребёнок Qt может быть предпочтительнее. Вот пример частного класса, использующего механизм родитель-ребёнок для вызова функции очистки в нужное время:

class MyPrivateInitStuff : public QObject
{
public:
    static MyPrivateInitStuff *initStuff(QObject *parent)
    {
        if (!p)
            p = new MyPrivateInitStuff(parent);
        return p;
    }

    ~MyPrivateInitStuff()
    {
        // cleanup goes here
    }

private:
    MyPrivateInitStuff(QObject *parent)
        : QObject(parent)
    {
        // initialization goes here
    }

    MyPrivateInitStuff *p;
};

Выбрав правильный родительский объект, часто можно обеспечить очистку данных модуля в нужное время.

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

void qRemovePostRoutine(QtCleanUpFunction ptr)

Удаляет процедуру очистки, задаваемую параметром ptr, из списка процедур, вызываемых деструктором QCoreApplication. Процедура должна быть ранее добавлена в список вызовом qAddPostRoutine(), в противном случае эта функция не имеет эффекта.

Эта функция была введена в Qt 5.3.

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

Документация по макросам

Q_COREAPP_STARTUP_FUNCTION(QtStartUpFunction ptr)

Добавляет глобальную функцию, которая будет вызвана из конструктора QCoreApplication. Этот макрос обычно используется для инициализации библиотек для функциональности всего приложения без необходимости вызова приложения в библиотеку для инициализации.

Функция, задаваемая параметром ptr, не должна принимать аргументов и не должна возвращать значение. Например:

// Called once QCoreApplication exists
static void preRoutineMyDebugTool()
{
    MyDebugTool* tool = new MyDebugTool(QCoreApplication::instance());
    QCoreApplication::instance()->installEventFilter(tool);
}

Q_COREAPP_STARTUP_FUNCTION(preRoutineMyDebugTool)

Обратите внимание, что функция запуска будет выполнена в конце конструктора QCoreApplication до любой инициализации пользовательского интерфейса. Если в функции требуется код пользовательского интерфейса, используйте таймер (или вызов в очереди) для выполнения инициализации позже, из цикла событий.

Если QCoreApplication удаляется и создаётся другой QCoreApplication, функция запуска будет вызвана снова.

Примечание: Эта функция реентерабельна.

Эта функция была введена в Qt 5.1.

Q_DECLARE_TR_FUNCTIONS(context)

Макрос Q_DECLARE_TR_FUNCTIONS() объявляет и реализует две функции перевода, tr() и trUtf8(), с такими подписями:

static inline QString tr(const char *sourceText,
                         const char *comment = 0);
static inline QString trUtf8(const char *sourceText,
                             const char *comment = 0);

Этот макрос полезен, если вы хотите использовать QObject::tr() или QObject::trUtf8() в классах, которые не наследуются от QObject.

Q_DECLARE_TR_FUNCTIONS() должен находиться в самом начале определения класса (перед первым public: или protected:). Например:

class MyMfcView : public CView
{
    Q_DECLARE_TR_FUNCTIONS(MyMfcView)

public:
    MyMfcView();
    ...
};

Параметр context обычно является именем класса, но может быть любым текстом.

См. также Q_OBJECT, QObject::tr() и QObject::trUtf8().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qcoreapplication.html

Spec-Zone.ru

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