Home · All Classes · Main Classes · Grouped Classes · Modules · Functions |
Класс QCoreApplication предоставляет обработку сообщений для консольного приложения Qt. Далее...
#include <QCoreApplication>
Наследует QObject.
Наследуется QApplication.
Класс QCoreApplication предоставляет обработку сообщений для консольного приложения Qt.
Этот класс используется для реализации цикла обрабтки сообщений приложениями не предоставляющими GUI. У каждого не-GUI приложения, использующего Qt, должен быть один объект QCoreApplication. Для GUI-приложений, см. QApplication.
QCoreApplication содержит главный цикл обработки сообщений в котором обрабатываются и пересылаются далее все сообщения операционной системы (например, сообщения таймера и сети) и других источников. Также этот класс управляет инициализацией и закрытием приложений инициированных как операционной системой, так и приложениями.
Аргументы коммандной строки переданной QCoreApplication доступны как argc() и argv(). Цикл обработки сообщений начинается с вызова exec(). Доолгие управляющие операции могут вызывать processEvents() для поддержания приложения в состоянии готовности.
Некоторые классы Qt (например, QString) могут использоваться без объекта QCoreApplication. Однака, мы рекомендуем в большинстве случаев создавать объект QCoreApplication или QApplication в Вашей функции main() как можно раньше.
Приложежние имеет applicationDirPath() и applicationFilePath(). Файлы перевода могут быть добавлены или удалены с использованием installTranslator() и removeTranslator(). Строки приложения могут быть переведены с помощью функции translate(). Функция translate() использует функции QObject::tr() и QObject::trUtf8().
Класс предоставляет слот quit() и сигнал aboutToQuit().
Также предоставляется несколько статических функций для удобства. Доступ к объекту QCoreApplication можно получить через instance(). Сообщения можно послать или передать с помощью sendEvent(), postEvent() и sendPostedEvents(). Определенные события могут быть удалены с помощью removePostedEvents() и вызваны с помощью flush(). Путь к библиотеке (см. QLibrary) может быть получен с помощью libraryPaths() и изменен с помощью setLibraryPaths(), addLibraryPath() и removeLibraryPath().
См. также QApplication, QAbstractEventDispatcher и QEventLoop.
Данный тип перечисления определяет способ шифрования 8-битой символьной строки, переданных в качество аргумента в translate():
Константа | Значение | Описание |
---|---|---|
QCoreApplication::DefaultCodec | 0 | Кодировка определенная в QTextCodec::codecForTr() (Если ни один не был установлен, то Latin1) |
QCoreApplication::UnicodeUTF8 | 1 | UTF-8 |
См. также QObject::tr(), QObject::trUtf8() и QString::fromUtf8().
Функция, которая может использоваться с фильтром событий, имеет следующее определение:
bool myEventFilter(void *message, long *result);
См. также setEventFilter().
Данное свойство хранит имя приложения.
Данное свойство используется классом QSettings при создании его экземпляра с помощью конструктора без параметров. Это избавляет от необходимости задавать это значение каждый раз при создании объекта QSettings.
Функции доступа:
См. также organizationName и organizationDomain.
Данное свойство хранин интернет-адрес организации написавшей приложение.
Данное свойство используется классом QSettings при создании его экземпляра с помощью конструктора без параметров. Это избавляет от необходимости задавать это значение каждый раз при создании объекта QSettings.
В системах Mac QSettings organizationDomain() использует данное свойство в качестве имени организации (если свойство не содержит пустую строку); в противном случае используется organizationName(). На всех других платформах QSettings использует в качестве имени организации organizationName().
Функции доступа:
См. также organizationName and applicationName.
Данное свойство хранит имя организации создавшей приложение.
Данное свойство используется классом QSettings при создании его экземпляра с помощью конструктора без параметров. Это избавляет от необходимости задавать это значение каждый раз при создании объекта QSettings.
В системах Mac QSettings organizationDomain() использует данное свойство в качестве имени организации (если свойство не содержит пустую строку); в противном случае используется organizationName(). На всех других платформах QSettings использует в качестве имени организации organizationName().
Функции доступа:
См. также organizationDomain и applicationName.
Создает приложение ядра Qt. Приложение ядра - это приложение без графического пользовательского интерфейса. Данный тип приложений используется при работе с консолью или с качестве обслуживающего процесса.
Аргументы argc и argv доступны через функции argc() и argv().
Разрушает объект QCoreApplication.
Данный сигнал испускается когда приложение сообирается завершить цикл обработки сообщений, например, когда уровень цикла обработки сообщений понижается до нуля. Это может случиться после того как поступит запрос quit() от внутренней части приложения или если пользователь закрывает основное окно.
Этот сигнал особенно полезен, если приложение должно убрать за собой после закрытия. Обратите внимание, что никакое взаимодействие с пользователем в этом состоянии невозможно.
См. также quit().
Добавляет path в конец списка путей к библиотекам. Если path пустой или уже присутствует в списке, то список не изменяется.
По умолчанию список путей содержит единственное значение - путь к директории уставновки плагинов. По умолчанию директория установки равна INSTALL/plugins, где INSTALL - это директория в которой уставновлена Qt.
См. также removeLibraryPath(), libraryPaths() и setLibraryPaths().
Возвращает имя директории, в которой установлено исполняемое приложение.
Например, если Вы установили Qt в директорию C:\Trolltech\Qt и запустили пример regexp, данная функция возвратит "C:/Trolltech/Qt/examples/tools/regexp".
В Mac OS X данная функция укажет на директорию, фактически содержащую выполняемый файл, который может находиться внутри связки приложений (если приложение связано).
Внимание: В Unix данная функция предполагает, что argv[0] содержит имя исполняемого файла (как это обычно и происходит). Также предполагается, что текущая директория не была изменена приложением.
См. также applicationFilePath().
Возвращает путь к исполняемому файлу приложения.
Например, если Вы установили Qt в директорию /usr/local/qt и запустили пример regexp, то данная функцию возвратит "/usr/local/qt/examples/tools/regexp/regexp".
Внимание: В Unix данная функция предполагает, что argv[0] содержит имя исполняемого файла (как это обычно и происходит). Также предполагается, что текущая директория не была изменена приложением.
См. также applicationDirPath().
Возвращает список аргументов командной строки.
arguments().at(0) - это имя программы, arguments().at(1) - это первый аргумент, а arguments().last() - это последний аргумент.
Вызов данной функции занимает продолжительное время. При парсинге командной строки, Вам лучше сохранить результат этой функции в переменной.
Внимание: В Unix этот список создается из параметров argc и argv, переданных в функцию main(). Строки в argv интерпретируются с помощью QString::fromLocal8Bit(); в результате, нет возможности разобрать, например, японские аргументы командной строки в системах, основанных на latin1. Большинство современных Unix-систем не имеют этого ограничения, так как они основаны на Unicode.
В NT-подобных Windows это ограничение также не действует.
Данная функция добавлена Qt 4.1.
Возвращает true если объект приложения разрушается; в противном случае возвращает false.
См. также startingUp().
Запускает основной цикл обработки сообщений и ждет вызова exit(). Возвращает значение установленное в exit() (значение равно 0 если exit() вызвано через quit()).
Данную функцию необходимо вызвать для начала обработки сообщений. Основной цикл обработки сообщений получает сообщения от оконной системы и перенаправляет их виджетам приложения.
Чтобы заставить приложение выполнять какие-либо действия в отсутствие сообщений используют QTimer с интервалом равным 0. Более продвинутые схемы обработки ожидания создают с использованием processEvents().
См. также quit(), exit(), processEvents() и QApplication::exec().
Посылает сообщение о выходе с нужным возвращаемым кодом.
После вызова этой функции приложение покидает главный цикл обработки сообщений и завершает функцию exec(). Функция exec() возвращает returnCode.
В соответствии с соглашением returnCode равный 0 говорит об успешном завершении, а отличный от 0 указывает на ошибку.
Обратите внимание, что в отличие от библиотечной функции C с таким же тазванием, эта функция передает управление вызывающему -- останавливается обработчик событий.
Посылает сообщение message в фильтр сообщений установленный с помощью setEventFilter(). Если фильтр сообщений не был установлен, данная функция возвращает false; в противном случае данная функция возвращает результат работы функции фильтр, который установливается в параметр result.
См. также setEventFilter().
Обрабатывает специфические для платформы события.
Если Вы делаете графические изменения в цикле и не передаете управление циклу обработки сообщений на асинхронных оконных системах подобных X11 или используете двойную буферизацию подобно Mac OS X, и хотите визуализировать эти изменения немедленно (например, Splash Screens), вызывайте эту функцию.
См. также sendPostedEvents().
Данная функция возвращает true если в очереди есть события; в противном случае возвращает false. События в очереди могут быть посланы системой или другими частями приложения с использованием postEvent().
См. также QAbstractEventDispatcher::hasPendingEvents().
Добавляет файл сообщений messageFile к списку файлов сообщений используемых для перевода.
Может быть установлено несколько файлов сообщений. Переводчик сперва ищет в последнем установленном файле, затем в предпоследнем и т.д. до первого файла. Поиск останавливается как только переводимое сообщение будет найдено.
См. также removeTranslator(), translate() и QTranslator::load().
Возвращает указатель на приложение QCoreApplication (или QApplication).
Возвращает список путей, которые приложение будет использовать при загрузке динамических библиотек. Если никакие пути установлены не были, тогда единственным значение в списке будет директория установки плагинов. По умолчанию директория установки плагинов - это INSTALL/plugins, где INSTALL - это директория, в которую был установлен Qt. Директория исполняемого файла (а НЕ рабочая директория) также добавляется к пути установки плагинов, как отделенная двоеточием часть переменной окружения QT_PLUGIN_PATH.
Если Вы хотите перебрать список, то можно воспользоваться псевдоключевым словом foreach:
foreach (QString path, app.libraryPaths()) do_something(path);
См. также setLibraryPaths(), addLibraryPath(), removeLibraryPath(), QLibrary и How to Create Qt Plugins.
Посылает сообщение event получателю receiver: receiver->event(event). Возвращает значение возвращенное обработчиком сообщений получателя.
Для некоторых типов событий (например сообщения мыши и клавиатуры) сообщения будут пересылаться родителю получателя и далее до объекта самого верхнего уровня если получатель не заинтересован в событии (т.е. его обработчик возвращает false).
Есть пять различных способов обработки сообщений; переопределение этой виртуальной функции только один из них. Далее следует краткое описание этих подходов:
См. также QObject::event() и installEventFilter().
Добавляет сообщение event в очередь сообщений объекта-приемника receiver и немедленно возвращает управление.
Сообщение должно быть размещено в куче, т.к. очередь сообщений возьмет его значение и удалит объект сообщения как только сообщение будет послано. Эта функция не гарантирует возможность изменять и удалять сообщение после того, как оно будет послано.
Когда управление возвращается к главному циклу обработки сообщений, все сообщения стоящие в очереди будут посланы с использованием функции notify().
Обратите внимание: Данная функция является потокобезопасной.
См. также sendEvent(), notify() и sendPostedEvent().
Обрабатывает все ожидающие события в соответствии с флагами flags пока не будет исчерпана очередь.
Вы можете вызывать данную функцию в некоторых случаях когда программа выполняет длительное действие (например копирование файла).
См. также exec(), QTimer, QEventLoop::processEvents(), flush() и sendPostedEvents().
Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной фунции.
Обрабатывает ожидающие сообщения в течение maxtime миллисекунд или меньше, если не больше событий.
Вы можете вызывать данную функцию в некоторых случаях когда программа выполняет длительное действие (например копирование файла).
См. также exec(), QTimer и QEventLoop::processEvents().
Сообщает, что приложение завершило свою работу и возвратило код 0 (успешное завершение). Эквивалентно вызову QCoreApplication::exit(0).
Обычно соединяют сигнал QApplication::lastWindowClosed() с quit(), также часто соединяют, например, QAbstractButton::clicked() или сигналы в QAction, QMenu или QMenuBar с данный слотом.
Пример:
QPushButton *quitButton = new QPushButton("Quit"); connect(quitButton, SIGNAL(clicked()), &app, SLOT(quit()));
См. также exit(), aboutToQuit() и QApplication::lastWindowClosed().
Удаляет путь path из списка путей к библиотекам. Если path является пустым значением или отсутствует в списке, то список не изменяется.
См. также addLibraryPath(), libraryPaths() и setLibraryPaths().
Удаляет все сообщения посланные приемнику receiver с помощью postEvent().
События не будут посланы, вместо этого они будут удалены из очереди. Никогда не используйте эту функция. Если Вы все-же вызвали ее, то знайте, что уничножение событий заставляет приемник прерывать один или более инвариантов.
Обратите внимание: Данная функция является потокобезопасной.
Удаляет файл перевода messageFile из списка файлов перевода используемых приложением. (Файл не удаляется из файловой системы.)
См. также installTranslator(), translate() и QObject::tr().
Посылает сообщение event непосредственно приемнику receiver используя функцию notify(). Возвращает значение возвращенное обработчиком сообщений.
Сообщение не удаляется после отправки. Нормальный подход состоит в том, чтобы создавать сообщения в стеке, например:
QMouseEvent event(QEvent::MouseButtonPress, pos, 0, 0); QApplication::sendEvent(mainWindow, &event);
См. также postEvent() и notify().
Немедленно посылает события ранее поставленные в очередь приемника receiver функцией QCoreApplication::postEvent() receiver и имеющие тип события event_type.
Обратите внимание, что события оконной системы посылаются не этой функцией, а processEvents().
Если receiver равно null, то посылаются все события с типом event_type всем объектам. Если event_type равно 0, то посылаются все события приемника receiver.
См. также flush() и postEvent().
Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной фунции.
Отправляет все посланные сообщения, т.е. освобождает очередь сообщений.
Устанавливает фильтр сообщений filter. Возвращает указатель на ранее определенную функцию-фильтр.
Фильтр событий - это функция, вызываемая в ответ на получение каждого события из любого потока. Это не относится к сообщениям посланным объекту не поддерживаемым Qt.
Функция возвращает true для остановки обработки сообщения Qt, или false для стандартной обработки сообщения.
Может быть определен только один фильтр сообщений, но фильтр может использовать возвращаемое значение для вызова ранее установленного фильтра. По умолчанию фильтр не установлен (т.е. функция возвращает 0).
См. также installEventFilter().
Устанавливает в качестве списка директорий в которых будут искаться подключаемые библиотеки paths. Все ранее установленные пути будут удалены и список путей будет состоять только из строк включенных в paths.
См. также libraryPaths(), addLibraryPath(), removeLibraryPath() и QLibrary.
Возвращает true если объект приложения не был создан; в противном случае возвращает false.
См. также closingDown().
Возвращает перевод текста sourceText, который ищет в ранее установленных файлах перевода. Перевод ищется начиная с наиболее поздно установленного файла переводов назад к первому установленному.
QObject::tr() и QObject::trUtf8() предоставляют аналогичные возможности в более удобной форме.
context - название класса (например, "MyDialog"), sourceText - либо английский текст или короткий текст идентификации, если перевод очень длинен (как в справочной системе).
comment - снимающий неоднозначность комментарий, когда один и тот-же текст sourceText используется в разных ролях в пределах одного контекста. По умолчанию равно null. encoding 8-битный индикатор кодировки строки символов.
Для получения более подробной информации о contexts и comments, см. QTranslator.
Если ни один из установленных файлов перевода не содержит перевод для sourceText в context, данная функция возвращает объект QString эквивалентный sourceText. Кодировкаf sourceText определяется encoding; по умолчанию - DefaultCodec.
Данная функция не является виртуальной. Для реализации альтернативной технологии перевода, Вы можете создать подкласс QTranslator.
Внимание: Данный механизм работает только если файлы перевода были установлены до вызова этого метода. Установка и удаление файлов перевода в процессе перевода не поддерживается. Несоблюдение этого правила может закончится аварией или другими неожиданными действиями программы.
Обратите внимание: Данная функция является монопоточной.
См. также QObject::tr(), installTranslator() и QTextCodec::codecForTr().
Эта функция вызывается при получении каждого сообщения. Осуществите повторно реализацию данной функции если Вы хотите обрабатывать сообщения оконной системы msg, необработанные Qt. Если Вы не хотите, чтобы сообщение было обработано Qt, возвратите true и установите result в значение, которой должна вернуть оконная процедура. В противном случае возвратите false.
Добавляет глобальную функцию, которая будет использоваться в деструкторе объекта QApplication. Данную функцию обычно используют для дообавления уборки мусора для программных расширений после завершения работы.
Функция указанная в 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() не всегда подходит. Например, если программа разделена не несколько динамически подключаемых модулей, нужный модуль может быть выгружен намного раньше, чем вызывается деструктор QApplication.
Использование счетчиков ссылок для модулей и подключаемых библиотек и механизма родительских и дочерних объектов Qt может быть намного удобнее. Вот пример класса, который использует механизм родительских и дочерних объектов для вызова функции уборки в нужное время:
class MyPrivateInitStuff : public QObject { public: static MyPrivateInitStuff *initStuff(QObject *parent) { if (!p) p = new MyPrivateInitStuff(parent); return p; } ~MyPrivateInitStuff() { // здесь производится уборка } private: MyPrivateInitStuff(QObject *parent) : QObject(parent) { // здесь производится инициализация } MyPrivateInitStuff *p; };
Правильно выбрав родительский объект часто можно решить проблему уборки данных модуля точно в нужный момент.
Макрос 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().
Copyright © 2005 Trolltech | Trademarks | Qt 4.1.0 |