QCoreApplication Class
QCoreApplication 클래스는 UI가 없는 Qt 어플리케이션을 위한 이벤트 루프를 제공합니다. 더 보기...
Header: | #include <QCoreApplication> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
상속합니다: | QObject |
상속 대상 |
속성
|
|
공용 기능
QCoreApplication(int &argc, char **argv) | |
virtual | ~QCoreApplication() |
(since 6.5) Qt::PermissionStatus | checkPermission(const QPermission &permission) |
void | installNativeEventFilter(QAbstractNativeEventFilter *filterObj) |
virtual bool | notify(QObject *receiver, QEvent *event) |
void | removeNativeEventFilter(QAbstractNativeEventFilter *filterObject) |
(since 6.5) void | requestPermission(const QPermission &permission, Functor &&functor) |
(since 6.5) void | requestPermission(const QPermission &permission, const QObject *context, Functor functor) |
공용 슬롯
신호
void | aboutToQuit() |
void | applicationNameChanged() |
void | applicationVersionChanged() |
void | organizationDomainChanged() |
void | organizationNameChanged() |
정적 공용 멤버
void | addLibraryPath(const QString &path) |
QString | applicationDirPath() |
QString | applicationFilePath() |
QString | applicationName() |
qint64 | applicationPid() |
QString | applicationVersion() |
QStringList | arguments() |
bool | closingDown() |
QAbstractEventDispatcher * | eventDispatcher() |
int | exec() |
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) |
(since 6.7) void | processEvents(QEventLoop::ProcessEventsFlags flags, QDeadlineTimer deadline) |
void | processEvents(QEventLoop::ProcessEventsFlags flags, int ms) |
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 = 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 = nullptr, int n = -1) |
재구현된 보호 함수
virtual bool | event(QEvent *e) override |
관련 비회원
void | qAddPostRoutine(QtCleanUpFunction ptr) |
void | qRemovePostRoutine(QtCleanUpFunction ptr) |
매크로
Q_COREAPP_STARTUP_FUNCTION(QtStartUpFunction ptr) | |
Q_DECLARE_TR_FUNCTIONS(context) |
상세 설명
이 클래스는 비 GU 응용 프로그램에서 이벤트 루프를 제공하는 데 사용됩니다. Qt GUI를 사용하지 않는 어플리케이션의 경우, 정확히 하나의 QCoreApplication 객체가 있어야 합니다. GUI 애플리케이션의 경우 QGuiApplication 을 참조하십시오. Qt Widgets 모듈을 사용하는 애플리케이션의 경우 QApplication 을 참조하십시오.
QCoreApplication에는 운영 체제의 모든 이벤트(예: 타이머 및 네트워크 이벤트) 및 기타 소스가 처리되고 전송되는 메인 이벤트 루프가 포함되어 있습니다. 또한 애플리케이션의 초기화 및 최종화는 물론 시스템 전체 및 애플리케이션 전체 설정도 처리합니다.
이벤트 루프 및 이벤트 처리
이벤트 루프는 exec() 호출로 시작됩니다. 장기 실행 작업은 processEvents()를 호출하여 애플리케이션의 응답성을 유지할 수 있습니다.
일반적으로 가능한 한 빨리 main()
함수에서 QCoreApplication, QGuiApplication 또는 QApplication 객체를 생성하는 것이 좋습니다. exec()는 이벤트 루프가 종료될 때까지 반환되지 않습니다(예: quit()가 호출될 때).
몇 가지 정적 편의 함수도 제공됩니다. QCoreApplication 객체는 instance()에서 사용할 수 있습니다. 이벤트는 sendEvent()로 보내거나 postEvent()로 이벤트 대기열에 게시할 수 있습니다. 보류 중인 이벤트는 removePostedEvents()로 제거하거나 sendPostedEvents()로 디스패치할 수 있습니다.
이 클래스는 quit() 슬롯과 aboutToQuit() 신호를 제공합니다.
애플리케이션 및 라이브러리 경로
애플리케이션에는 applicationDirPath() 및 applicationFilePath()가 있습니다. 라이브러리 경로( QLibrary 참조)는 libraryPaths()로 검색하고 setLibraryPaths(), addLibraryPath() 및 removeLibraryPath()로 조작할 수 있습니다.
국제화 및 번역
번역 파일은 installTranslator() 및 removeTranslator()를 사용하여 추가하거나 제거할 수 있습니다. 애플리케이션 문자열은 translate()를 사용하여 번역할 수 있습니다. QObject::tr () 함수는 translate()의 관점에서 구현됩니다.
명령줄 인수에 액세스하기
QCoreApplication의 생성자에 전달되는 명령줄 인수는 arguments() 함수를 사용하여 액세스해야 합니다.
참고: QCoreApplication은 -qmljsdebugger="..."
옵션을 제거합니다. qmljsdebugger
의 인수를 구문 분석한 다음 이 옵션과 해당 인수를 제거합니다.
고급 명령줄 옵션 처리를 위해서는 QCommandLineParser 을 생성하세요.
로캘 설정
Unix/Linux에서 Qt는 기본적으로 시스템 로캘 설정을 사용하도록 구성됩니다. 로캘마다 표기법이 다를 수 있으므로 POSIX 함수를 사용할 때, 예를 들어 부동 소수점과 문자열과 같은 데이터 유형 간에 변환할 때 충돌이 발생할 수 있습니다. 이 문제를 해결하려면 QApplication, QGuiApplication 또는 QCoreApplication을 초기화한 직후 POSIX 함수 setlocale(LC_NUMERIC,"C")
를 호출하여 숫자 서식에 사용되는 로캘을 "C"-로캘로 재설정합니다.
QGuiApplication, QAbstractEventDispatcher, QEventLoop, 세마포어를 사용하는 생산자 및 소비자, 대기 조건을 사용하는 생산자 및 소비자도참조하세요 .
속성 문서
applicationName : QString
이 프로퍼티는 이 애플리케이션의 이름을 저장합니다.
응용 프로그램 이름은 다양한 Qt 클래스와 모듈에서 사용되며, 기본 생성자를 사용하여 생성될 때 QSettings 에서 가장 두드러지게 사용됩니다. 다른 용도로는 형식화된 로깅 출력( qSetMessagePattern() 참조), QCommandLineParser 의 출력, QTemporaryDir 및 QTemporaryFile 기본 경로, QStandardPaths 의 일부 파일 위치에서 사용됩니다. Qt D-Bus접근성 및 XCB 플랫폼 통합에서도 애플리케이션 이름을 사용합니다.
설정하지 않으면 애플리케이션 이름이 기본값으로 실행 파일 이름이 사용됩니다.
액세스 기능:
QString | applicationName() |
void | setApplicationName(const QString &application) |
알림 신호:
void | applicationNameChanged() |
organizationName, organizationDomain, applicationVersion, applicationFilePath()도 참조하세요 .
applicationVersion : QString
이 프로퍼티는 이 애플리케이션의 버전을 보유합니다.
설정하지 않으면 애플리케이션 버전은 기본값으로 기본 애플리케이션 실행 파일 또는 패키지에서 결정된 플랫폼별 값(Qt 5.9 이후)을 사용합니다:
Platform | Source |
---|---|
Windows(클래식 데스크톱) | VERSIONINFO 리소스의 PRODUCTVERSION 파라미터 |
macOS, iOS, tvOS, watchOS | 정보 속성 목록의 CFBundleVersion 속성 |
안드로이드 | AndroidManifest.xml 매니페스트 요소의 android:versionName 속성 |
다른 플랫폼에서는 기본값이 빈 문자열입니다.
함수에 액세스합니다:
QString | applicationVersion() |
void | setApplicationVersion(const QString &version) |
알림 신호:
void | applicationVersionChanged() |
applicationName, organizationName, organizationDomain 를참조하세요 .
organizationDomain : QString
이 속성은 이 애플리케이션을 작성한 조직의 인터넷 도메인을 보유합니다.
이 값은 기본 생성자를 사용하여 QSettings 클래스가 생성될 때 사용됩니다. 이렇게 하면 QSettings 객체를 만들 때마다 이 정보를 반복할 필요가 없습니다.
Mac에서는 QSettings 이 빈 문자열이 아닌 경우 organizationDomain()을 조직으로 사용하고, 그렇지 않으면 organizationName()을 사용합니다. 다른 모든 플랫폼에서 QSettings 는 organizationName()를 조직으로 사용합니다.
액세스 함수
QString | organizationDomain() |
void | setOrganizationDomain(const QString &orgDomain) |
알림 신호:
void | organizationDomainChanged() |
organizationName, applicationName, applicationVersion 를참조하세요 .
organizationName : QString
이 속성은 이 애플리케이션을 작성한 조직의 이름을 보유합니다.
이 값은 기본 생성자를 사용하여 QSettings 클래스가 생성될 때 사용됩니다. 이렇게 하면 QSettings 개체를 만들 때마다 이 정보를 반복할 필요가 없습니다.
Mac에서 QSettings 은 빈 문자열이 아닌 경우 organizationDomain()을 조직으로 사용하고, 그렇지 않은 경우 organizationName()을 사용합니다. 다른 모든 플랫폼에서는 QSettings 조직으로 organizationName()을 사용합니다.
함수 액세스
QString | organizationName() |
void | setOrganizationName(const QString &orgName) |
알림 신호:
void | organizationNameChanged() |
organizationDomain 및 applicationName 을참조하세요 .
quitLockEnabled : bool
이 속성은 QEventLoopLocker 기능 사용으로 인해 애플리케이션이 종료될 수 있는지 여부를 보유합니다.
이 속성이 true
인 경우 애플리케이션에 마지막으로 남은 QEventLoopLocker 을 릴리스하면 애플리케이션 종료를 시도합니다.
예를 들어 열려 있는 창이 아직 있거나 QEvent::Quit 이벤트가 무시되는 경우와 같이 종료를 시도해도 애플리케이션이 반드시 종료되지 않을 수 있습니다.
기본값은 true
입니다.
기능에 액세스합니다:
bool | isQuitLockEnabled() |
void | setQuitLockEnabled(bool enabled) |
QEventLoopLocker 를참조하세요 .
멤버 함수 문서
QCoreApplication::QCoreApplication(int &argc, char **argv)
Qt 코어 애플리케이션을 구축합니다. 코어 애플리케이션은 그래픽 사용자 인터페이스가 없는 애플리케이션입니다. 이러한 응용 프로그램은 콘솔에서 또는 서버 프로세스로 사용됩니다.
argc 및 argv 인수는 응용 프로그램에서 처리되며 arguments() 함수에 의해 보다 편리한 형태로 제공됩니다.
경고: argc 및 argv 에서 참조하는 데이터는 QCoreApplication 객체의 전체 수명 기간 동안 유효해야 합니다. 또한 argc 은 0보다 커야 하고 argv 은 하나 이상의 유효한 문자열을 포함해야 합니다.
[virtual noexcept]
QCoreApplication::~QCoreApplication()
QCoreApplication 객체를 삭제합니다.
[private signal]
void QCoreApplication::aboutToQuit()
이 신호는 애플리케이션이 메인 이벤트 루프를 종료하려고 할 때(예: 이벤트 루프 레벨이 0으로 떨어질 때) 발생합니다. 애플리케이션 내부에서 quit()를 호출한 후 또는 사용자가 전체 데스크톱 세션을 종료할 때 발생할 수 있습니다.
이 신호는 애플리케이션이 마지막 순간에 정리를 해야 하는 경우에 특히 유용합니다. 이 상태에서는 사용자 상호작용이 불가능하다는 점에 유의하세요.
참고: 이 시점에서 메인 이벤트 루프는 여전히 실행 중이지만 deleteLater()를 통해 삭제된 개체에 대한 QEvent::DeferredDelete 이벤트를 제외하고는 반환 시 추가 이벤트를 처리하지 않습니다. 이벤트 처리가 필요한 경우 중첩된 이벤트 루프를 사용하거나 QCoreApplication::processEvents()를 수동으로 호출하세요.
참고: 이것은 비공개 신호입니다. 신호 연결에서 사용할 수 있지만 사용자가 방출할 수는 없습니다.
quit()도 참조하세요 .
[static]
void QCoreApplication::addLibraryPath(const QString &path)
라이브러리 경로 목록의 시작 부분에 path 을 추가하여 라이브러리를 먼저 검색하도록 합니다. path 이 비어 있거나 이미 경로 목록에 있는 경우 경로 목록은 변경되지 않습니다.
기본 경로 목록은 하나 또는 두 개의 항목으로 구성됩니다. 첫 번째는 플러그인 설치 디렉토리로 INSTALL/plugins
이며, 여기서 INSTALL
은 Qt가 설치된 디렉토리입니다. 두 번째는 애플리케이션의 자체 디렉토리(현재 디렉터리가아님 )로, QCoreApplication 객체가 인스턴스화된 후에만 해당됩니다.
QCoreApplication 인스턴스가 파괴되면 라이브러리 경로는 기본값으로 재설정됩니다.
removeLibraryPath(), libraryPaths() 및 setLibraryPaths()도 참조하세요 .
[static]
QString QCoreApplication::applicationDirPath()
애플리케이션 실행 파일이 들어있는 디렉터리를 반환합니다.
예를 들어 C:\Qt
디렉터리에 Qt를 설치하고 regexp
예제를 실행하는 경우, 이 함수는 "C:/Qt/examples/tools/regexp"를 반환합니다.
macOS 및 iOS에서는 실제로 실행 파일이 포함된 디렉터리를 가리키며, 애플리케이션 번들 안에 있을 수 있습니다(애플리케이션이 번들로 제공되는 경우).
경고: Linux에서는 이 함수가 /proc
파일 시스템에서 경로를 가져오려고 시도합니다. 실패하면 argv[0]
에 실행 파일의 절대 파일 이름이 포함되어 있다고 가정합니다. 또한 이 함수는 현재 디렉터리가 애플리케이션에 의해 변경되지 않았다고 가정합니다.
applicationFilePath()도 참조하세요 .
[static]
QString QCoreApplication::applicationFilePath()
애플리케이션 실행 파일의 파일 경로를 반환합니다.
예를 들어, /usr/local/qt
디렉터리에 Qt를 설치하고 regexp
예제를 실행하는 경우 이 함수는 "/usr/local/qt/examples/tools/regexp/regexp"를 반환합니다.
경고: Linux에서 이 함수는 /proc
파일 시스템에서 경로를 가져오려고 시도합니다. 실패하면 argv[0]
에 실행 파일의 절대 파일 이름이 포함되어 있다고 가정합니다. 또한 이 함수는 현재 디렉터리가 애플리케이션에 의해 변경되지 않았다고 가정합니다.
applicationDirPath()도 참조하세요 .
[static]
qint64 QCoreApplication::applicationPid()
애플리케이션의 현재 프로세스 ID를 반환합니다.
[static]
QStringList QCoreApplication::arguments()
명령줄 인자의 목록을 반환합니다.
일반적으로 arguments().at(0)은 프로그램 이름, arguments().at(1)은 첫 번째 인수, arguments().last()는 마지막 인수를 반환합니다. Windows에 대한 아래 참고 사항을 참조하세요.
이 함수를 호출하면 속도가 느려지므로 명령줄을 구문 분석할 때 결과를 변수에 저장해야 합니다.
경고: Unix에서 이 목록은 main() 함수에서 생성자에 전달된 argc 및 argv 매개 변수를 통해 작성됩니다. argv의 문자열 데이터는 QString::fromLocal8Bit()를 사용하여 해석되므로 라틴1 로캘에서 실행되는 시스템에서는 예를 들어 일본어 명령줄 인수를 전달할 수 없습니다. 대부분의 최신 Unix 시스템은 유니코드 기반이므로 이러한 제한이 없습니다.
Windows에서는 수정된 argv/argc 매개변수가 생성자에 전달되는 경우에만 목록이 argc 및 argv 매개변수에서 작성됩니다. 이 경우 인코딩 문제가 발생할 수 있습니다.
그렇지 않으면 arguments()는 GetCommandLine()의 반환 값으로 구성됩니다. 그 결과 응용 프로그램이 시작된 방식에 따라 arguments().at(0)에 지정된 문자열이 Windows에서 프로그램 이름이 아닐 수 있습니다.
applicationFilePath() 및 QCommandLineParser 을참조하세요 .
[since 6.5]
Qt::PermissionStatus QCoreApplication::checkPermission(const QPermission &permission)
주어진 상태를 확인합니다. permission
결과가 Qt::PermissionStatus::Undetermined 인 경우 requestPermission()을 통해 권한을 요청하여 사용자의 의도를 확인해야 합니다.
이 함수는 Qt 6.5에 도입되었습니다.
requestPermission() 및 애플리케이션 권한도참조하세요 .
[static]
bool QCoreApplication::closingDown()
애플리케이션 객체가 소멸 중이면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
startingUp()도 참조하세요 .
[override virtual protected]
bool QCoreApplication::event(QEvent *e)
다시 구현합니다: QObject::event(QEvent *e).
[static]
QAbstractEventDispatcher *QCoreApplication::eventDispatcher()
메인 스레드에 대한 이벤트 디스패처 객체에 대한 포인터를 반환합니다. 스레드에 대한 이벤트 디스패처가 존재하지 않으면 이 함수는 nullptr
을 반환합니다.
setEventDispatcher()도 참조하세요 .
[static]
int QCoreApplication::exec()
메인 이벤트 루프에 들어가 exit()가 호출될 때까지 기다립니다. exit ()에 전달된 값을 반환합니다( exit()가 quit()를 통해 호출된 경우 0이 됩니다).
이벤트 처리를 시작하려면 이 함수를 호출해야 합니다. 메인 이벤트 루프는 창 시스템에서 이벤트를 수신하여 애플리케이션 위젯으로 전송합니다.
보류 중인 이벤트가 없을 때마다 특수 함수를 실행하여 애플리케이션이 유휴 처리를 수행하도록 하려면 시간 제한이 0ns인 QChronoTimer 을 사용하세요. processEvents ()를 사용하여 보다 고급 유휴 처리 방식을 구현할 수 있습니다.
일부 플랫폼에서는 exec() 호출이 반환되지 않을 수 있으므로 정리 코드를 애플리케이션의 main()
함수에 넣는 대신 aboutToQuit() 신호에 연결하는 것이 좋습니다. 예를 들어, Windows에서는 사용자가 로그오프하면 Qt가 모든 최상위 창을 닫은 후 시스템이 프로세스를 종료합니다. 따라서 실행() 호출 후 main()
함수가 끝날 때 애플리케이션이 이벤트 루프를 종료하고 코드를 실행할 시간이 있다는 보장은 없습니다.
quit(), exit(), processEvents() 및 QApplication::exec()도 참조하십시오 .
[static slot]
void QCoreApplication::exit(int returnCode = 0)
반환 코드와 함께 애플리케이션을 종료하도록 지시합니다.
이 함수가 호출된 후 애플리케이션은 메인 이벤트 루프에서 벗어나 exec()로 돌아갑니다. exec () 함수는 returnCode 을 반환합니다. 이벤트 루프가 실행되고 있지 않으면 이 함수는 아무 작업도 수행하지 않습니다.
규칙에 따라 returnCode 0은 성공을 의미하며 0이 아닌 값은 오류를 나타냅니다.
항상 QueuedConnection 을 사용하여 이 슬롯에 신호를 연결하는 것이 좋습니다. 이 슬롯에 연결된(대기열에 포함되지 않은) 신호가 제어가 메인 이벤트 루프에 들어가기 전에(예: "int main"이 exec() 호출하기 전에) 방출되면 슬롯은 아무런 효과가 없으며 애플리케이션이 종료되지 않습니다. 큐 연결을 사용하면 컨트롤이 메인 이벤트 루프에 진입할 때까지 슬롯이 호출되지 않습니다.
같은 이름의 C 라이브러리 함수와 달리 이 함수는 호출자에게 반환되며 이벤트 처리가 중지된다는 점에 유의하세요.
또한 이 함수는 스레드 안전하지 않다는 점에 유의하세요. 이 함수는 메인 스레드( QCoreApplication 객체가 이벤트를 처리하는 스레드)에서만 호출해야 합니다. 애플리케이션이 다른 스레드에서 종료하도록 요청하려면 QCoreApplication::quit()를 사용하거나 대신 메인 스레드에서 QMetaMethod::invokeMethod()를 사용하여 이 함수를 호출하세요.
void QCoreApplication::installNativeEventFilter(QAbstractNativeEventFilter *filterObj)
메인 스레드에서 애플리케이션이 수신하는 모든 네이티브 이벤트에 대해 이벤트 필터 filterObj 를 설치합니다.
이벤트 필터 filterObj 는 메인 스레드에서 수신되는 모든 네이티브 이벤트에 대해 호출되는 nativeEventFilter() 함수를 통해 이벤트를 수신합니다.
QAbstractNativeEventFilter::nativeEventFilter() 함수는 이벤트가 필터링되어야 하는 경우, 즉 중지되어야 하는 경우 참을 반환해야 합니다. 정상적인 Qt 처리를 계속하려면 false를 반환해야 합니다. 그러면 네이티브 이벤트는 QEvent 로 변환되어 표준 Qt event 필터링(예: QObject::installEventFilter()에 의해 처리될 수 있습니다.
이벤트 필터가 여러 개 설치되어 있는 경우 마지막에 설치된 필터가 먼저 활성화됩니다.
참고: 여기에 설정된 필터 함수는 네이티브 메시지, 즉 MSG 또는 XCB 이벤트 구조체를 수신합니다.
참고: Qt::AA_PluginApplication 속성이 설정되면 애플리케이션에서 네이티브 이벤트 필터가 비활성화됩니다.
이식성을 극대화하려면 가능하면 항상 QEvent 및 QObject::installEventFilter()을 사용해야 합니다.
QObject::installEventFilter()도 참조하세요 .
[static]
bool QCoreApplication::installTranslator(QTranslator *translationFile)
번역 파일 목록에 번역 파일 translationFile 을 번역에 사용할 번역 파일 목록에 추가합니다.
여러 번역 파일을 설치할 수 있습니다. 번역 파일은 설치된 역순으로 검색되므로 가장 최근에 설치된 번역 파일이 먼저 검색되고 가장 먼저 설치된 번역 파일이 마지막으로 검색됩니다. 일치하는 문자열이 포함된 번역이 발견되는 즉시 검색이 중지됩니다.
QTranslator 을 설치 또는 제거하거나 설치된 QTranslator 을 변경하면 QCoreApplication 인스턴스에 대한 LanguageChange 이벤트가 생성됩니다. QApplication 인스턴스는 이벤트를 모든 최상위 위젯으로 전파하며, changeEvent를 다시 구현하면 tr() 함수를 통해 사용자가 볼 수 있는 문자열을 각 속성 설정자에게 전달하여 사용자 인터페이스를 다시 번역할 수 있습니다. Qt Widgets Designer 에서 생성된 사용자 인터페이스 클래스는 호출할 수 있는 retranslateUi()
함수를 제공합니다.
이 함수는 성공하면 true
, 실패하면 false를 반환합니다.
참고: QCoreApplication 은 translationFile 의 소유권을 갖지 않습니다.
removeTranslator(), translate(), QTranslator::load() 및 동적 언어 변경에 대한 준비도참조하세요 .
[static noexcept]
QCoreApplication *QCoreApplication::instance()
애플리케이션의 QCoreApplication (또는 QGuiApplication/QApplication) 인스턴스에 대한 포인터를 반환합니다.
인스턴스가 할당되지 않은 경우 nullptr
가 반환됩니다.
[static]
bool QCoreApplication::isSetuidAllowed()
애플리케이션이 UNIX 플랫폼에서 setuid를 실행할 수 있으면 true를 반환합니다.
QCoreApplication::setSetuidAllowed()도 참조하십시오 .
[static]
QStringList QCoreApplication::libraryPaths()
애플리케이션이 라이브러리를 동적으로 로드할 때 검색할 경로 목록을 반환합니다.
이 함수의 반환 값은 QCoreApplication 을 만들 때 변경될 수 있습니다. QCoreApplication 을 만들기 전에 이 함수를 호출하지 않는 것이 좋습니다. 애플리케이션 실행 파일의 디렉터리( 작업 디렉터리가아닌) 가 알려진 경우 목록의 일부가 됩니다. 이를 알리기 위해서는 argv[0]
을 사용하여 QCoreApplication 을 만들어야 합니다.
Qt는 기본 라이브러리 경로를 제공하지만, qt.conf 파일을 사용하여 설정할 수도 있습니다. 이 파일에 지정된 경로는 기본값을 재정의합니다. qt.conf 파일이 응용 프로그램 실행 파일의 디렉토리에 있는 경우 QCoreApplication 을 생성할 때까지 찾지 못할 수 있습니다. 이 함수를 호출할 때 파일을 찾지 못하면 기본 라이브러리 경로가 사용됩니다.
플러그인 설치 디렉터리가 있는 경우 목록에 포함됩니다(플러그인 기본 설치 디렉터리는 INSTALL/plugins
, 여기서 INSTALL
은 Qt가 설치된 디렉터리입니다). 콜론으로 구분된 QT_PLUGIN_PATH
환경 변수의 항목은 항상 추가됩니다. 플러그인 설치 디렉터리(및 그 존재 여부)는 응용 프로그램 실행 파일의 디렉터리가 알려지면 변경될 수 있습니다.
setLibraryPaths(), addLibraryPath(), removeLibraryPath(), QLibrary, 및 Qt 플러그인 생성 방법도참조하십시오 .
[virtual]
bool QCoreApplication::notify(QObject *receiver, QEvent *event)
event 를 receiver 으로 전송 : receiver->event(event). 수신자의 이벤트 핸들러에서 반환된 값을 반환합니다. 이 함수는 모든 스레드의 모든 객체에 전송된 모든 이벤트에 대해 호출됩니다.
특정 유형의 이벤트(예: 마우스 및 키 이벤트)의 경우, 수신자가 이벤트에 관심이 없는 경우(즉, false
)에는 이벤트가 수신자의 부모 등으로 전파되어 최상위 객체까지 전달됩니다.
이벤트를 처리하는 방법에는 다섯 가지가 있으며, 이 가상 함수를 다시 구현하는 것도 그 중 하나에 불과합니다. 다섯 가지 접근 방식은 모두 아래에 나열되어 있습니다:
- paintEvent(), mousePressEvent() 등을 재구현하기. 가장 일반적이고, 가장 쉽고, 가장 강력하지 않은 방법입니다.
- 이 기능을 다시 구현합니다. 이 방법은 매우 강력하여 완벽한 제어 기능을 제공하지만 한 번에 하나의 하위 클래스만 활성화할 수 있습니다.
- QCoreApplication::instance()에 이벤트 필터를 설치합니다. 이러한 이벤트 필터는 모든 위젯에 대한 모든 이벤트를 처리할 수 있으므로 notify()를 다시 구현하는 것만큼 강력하며, 더 나아가 애플리케이션-글로벌 이벤트 필터를 둘 이상 가질 수 있습니다. 글로벌 이벤트 필터는 disabled widgets 에 대한 마우스 이벤트도 확인합니다. 애플리케이션 이벤트 필터는 메인 스레드에 있는 객체에 대해서만 호출된다는 점에 유의하세요.
- QObject::event() ( QWidget 처럼)을 다시 구현합니다. 이렇게 하면 Tab 키를 누르면 위젯별 이벤트 필터보다 먼저 이벤트를 볼 수 있습니다.
- 개체에 이벤트 필터 설치하기. 이러한 이벤트 필터는 초점 위젯을 변경하지 않는 한 Tab 및 Shift+Tab 키 누르기 이벤트를 포함한 모든 이벤트를 가져옵니다.
향후 방향: 이 함수는 Qt 7의 메인 스레드 외부에 있는 객체에 대해서는 호출되지 않습니다. 해당 기능이 필요한 애플리케이션은 당분간 이벤트 검사에 필요한 다른 솔루션을 찾아야 합니다. 변경 사항이 메인 스레드로 확장되어 이 함수가 더 이상 사용되지 않을 수 있습니다.
경고: 이 함수를 재정의하는 경우 애플리케이션 객체가 소멸을 시작하기 전에 이벤트를 처리하는 모든 스레드가 중단되도록 해야 합니다. 여기에는 사용 중인 다른 라이브러리에서 시작한 스레드가 포함되지만, Qt의 자체 스레드에는 적용되지 않습니다.
QObject::event() 및 installNativeEventFilter()도 참조하십시오 .
[static]
void QCoreApplication::postEvent(QObject *receiver, QEvent *event, int priority = Qt::NormalEventPriority)
이벤트 수신자로 receiver 객체가 있는 이벤트 event 를 이벤트 큐에 추가하고 즉시 반환합니다.
이벤트가 게시되면 이벤트 큐가 이벤트의 소유권을 가져와 삭제하므로 이벤트는 힙에 할당되어야 합니다. 이벤트가 게시된 후에는 이벤트에 액세스하는 것이 안전하지 않습니다.
제어가 메인 이벤트 루프로 돌아오면 큐에 저장된 모든 이벤트는 notify() 함수를 사용하여 전송됩니다.
이벤트는 priority 내림차순으로 정렬됩니다. 즉, priority 이 높은 이벤트는 priority 이 낮은 이벤트보다 먼저 큐에 대기합니다. priority 는 INT_MAX와 INT_MIN 사이의 모든 정수 값일 수 있으며, 자세한 내용은 Qt::EventPriority 을 참조하세요. priority 이 같은 이벤트는 게시된 순서대로 처리됩니다.
참고: 이 함수는 스레드에 안전합니다.
sendEvent(), notify(), sendPostedEvents() 및 Qt::EventPriority 을참조하세요 .
[static]
void QCoreApplication::processEvents(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents)
지정된 flags 에 따라 호출 스레드에 대한 일부 보류 중인 이벤트를 처리합니다.
이 함수의 사용은 권장하지 않습니다. 대신 긴 작업을 GUI 스레드에서 보조 스레드로 옮기고 중첩된 이벤트 루프 처리를 완전히 피하는 것이 좋습니다. 이벤트 처리가 꼭 필요한 경우에는 QEventLoop 대신 사용하는 것이 좋습니다.
이벤트 루프 없이 이 함수를 계속 호출하는 로컬 루프를 실행하는 경우 DeferredDelete 이벤트는 처리되지 않습니다. 이는 DeferredDelete 이벤트에 의존하여 제대로 작동하는 위젯(예: QToolTip)의 동작에 영향을 줄 수 있습니다. 다른 방법은 해당 로컬 루프 내에서 sendPostedEvents()를 호출하는 것입니다.
이 함수를 호출하면 호출 스레드의 이벤트만 처리하고 사용 가능한 모든 이벤트가 처리된 후에 반환합니다. 사용 가능한 이벤트는 함수 호출 전에 큐에 대기 중인 이벤트입니다. 즉, 함수가 실행되는 동안 게시되는 이벤트는 이후 이벤트 처리 라운드까지 큐에 대기됩니다.
참고: 이 함수는 스레드 안전합니다.
exec(), QTimer, QChronoTimer, QEventLoop::processEvents() 및 sendPostedEvents()도 참조하세요 .
[static, since 6.7]
void QCoreApplication::processEvents(QEventLoop::ProcessEventsFlags flags, QDeadlineTimer deadline)
이 함수는 오버로드된 함수입니다.
deadline 이 만료될 때까지 또는 처리할 이벤트가 더 이상 없을 때까지, 둘 중 먼저 발생하는 시점까지 호출 스레드에 대한 보류 중인 이벤트를 처리합니다.
이 함수의 사용은 권장하지 않습니다. 대신 긴 작업은 GUI 스레드에서 보조 스레드로 옮기고 중첩된 이벤트 루프 처리를 완전히 피하는 것이 좋습니다. 이벤트 처리가 꼭 필요한 경우에는 QEventLoop 을 대신 사용하는 것이 좋습니다.
이 함수를 호출하면 호출 스레드에 대한 이벤트만 처리됩니다.
참고: processEvents() 오버로드와 달리 이 함수는 함수가 실행되는 동안 게시되는 이벤트도 처리합니다.
참고: 시간 초과 전에 대기열에 있던 모든 이벤트는 시간이 얼마나 걸리든 처리됩니다.
참고: 이 함수는 스레드 안전합니다.
이 함수는 Qt 6.7에 도입되었습니다.
exec(), QTimer, QChronoTimer, QEventLoop::processEvents()도 참조하세요 .
[static]
void QCoreApplication::processEvents(QEventLoop::ProcessEventsFlags flags, int ms)
이 함수는 오버로드된 함수입니다.
호출 스레드에 대해 보류 중인 이벤트를 ms 밀리초 동안 또는 처리할 이벤트가 더 이상 없을 때까지 둘 중 더 짧은 시간 동안 처리합니다.
이는 호출과 동일합니다:
QCoreApplication::processEvents(flags, QDeadlineTimer(ms));
[static slot]
void QCoreApplication::quit()
애플리케이션의 종료를 요청합니다.
애플리케이션이 창 중 하나를 닫을 수 없는 경우 등 애플리케이션이 종료를 방지하는 경우 요청이 무시될 수 있습니다. 애플리케이션은 애플리케이션 수준에서 QEvent::Quit 이벤트를 처리하거나 개별 창에 대해 QEvent::Close 이벤트를 처리하여 영향을 줄 수 있습니다.
종료가 중단되지 않으면 애플리케이션은 반환 코드 0(성공)과 함께 종료됩니다.
중단되지 않고 애플리케이션을 종료하려면 exit()를 직접 호출하세요. 이 방법은 스레드 안전하지 않다는 점에 유의하세요.
항상 QueuedConnection 를 사용하여 이 슬롯에 신호를 연결하는 것이 좋습니다. 이 슬롯에 연결된(대기열에 넣지 않은) 신호가 제어가 메인 이벤트 루프에 들어가기 전에(예: "int main"이 exec() 호출하기 전에) 방출되면 슬롯은 아무런 효과가 없으며 애플리케이션이 종료되지 않습니다. 큐에 대기 중인 연결을 사용하면 컨트롤이 메인 이벤트 루프에 진입할 때까지 슬롯이 호출되지 않습니다.
예시:
QPushButton *quitButton = new QPushButton("Quit"); connect(quitButton, &QPushButton::clicked, &app, &QCoreApplication::quit, Qt::QueuedConnection);
스레드안전 참고: 이 함수를 모든 스레드에서 호출하면 현재 실행 중인 주 애플리케이션 루프가 안전하게 종료될 수 있습니다. 그러나 QCoreApplication 객체가 동시에 소멸되는 경우 스레드 안전성이 보장되지 않습니다.
참고: 이 함수는 스레드 안전합니다.
exit() 및 aboutToQuit()도 참조하세요 .
[static]
void QCoreApplication::removeLibraryPath(const QString &path)
라이브러리 경로 목록에서 path 을 제거합니다. path 이 비어 있거나 경로 목록에 없는 경우 목록은 변경되지 않습니다.
QCoreApplication 인스턴스가 삭제되면 라이브러리 경로가 기본값으로 재설정됩니다.
addLibraryPath(), libraryPaths() 및 setLibraryPaths()도 참조하세요 .
void QCoreApplication::removeNativeEventFilter(QAbstractNativeEventFilter *filterObject)
이 개체에서 filterObject 이벤트를 제거합니다. 해당 이벤트 필터가 설치되지 않은 경우 요청은 무시됩니다.
이 객체가 소멸되면 이 객체에 대한 모든 이벤트 필터가 자동으로 제거됩니다.
이벤트 필터가 활성화 중일 때에도(즉, nativeEventFilter() 함수에서) 이벤트 필터를 제거하는 것이 항상 안전합니다.
installNativeEventFilter()도 참조하세요 .
[static]
void QCoreApplication::removePostedEvents(QObject *receiver, int eventType = 0)
receiver 에 대해 postEvent()를 사용하여 게시된 지정된 eventType 의 모든 이벤트를 제거합니다.
이벤트는 디스패치되지 않고 대기열에서 제거됩니다. 이 함수는 절대 호출할 필요가 없습니다. 이 함수를 호출하는 경우 이벤트를 죽이면 receiver 이 하나 이상의 불변성을 깨뜨릴 수 있다는 점에 유의하세요.
receiver 가 nullptr
인 경우 eventType 의 이벤트는 모든 오브젝트에 대해 제거됩니다. eventType 이 0이면 receiver 에 대한 모든 이벤트가 제거됩니다. eventType 가 0인 상태에서 이 함수를 호출해서는 안 됩니다.
참고: 이 함수는 스레드에 안전합니다.
[static]
bool QCoreApplication::removeTranslator(QTranslator *translationFile)
이 애플리케이션에서 사용하는 번역 파일 목록에서 번역 파일 translationFile 을 제거합니다. (파일 시스템에서 번역 파일을 삭제하지는 않습니다.)
이 함수는 성공하면 true
, 실패하면 false를 반환합니다.
installTranslator(), translate() 및 QObject::tr()도 참조하세요 .
[since 6.5]
template <typename Functor> void QCoreApplication::requestPermission(const QPermission &permission, Functor &&functor)
주어진 permission 을 요청합니다.
요청이 준비되면 functor 은 functor(const QPermission &permission)
으로 호출되며 permission
은 요청 결과를 설명합니다.
functor 은 독립형 또는 정적 멤버 함수일 수 있습니다:
qApp->requestPermission(QCameraPermission{}, &permissionUpdated);
또는 람다일 수 있습니다:
qApp->requestPermission(QCameraPermission{}, [](const QPermission &permission) { });
사용자가 애플리케이션에 요청된 permission 을 명시적으로 허용하거나 permission 이 해당 플랫폼에서 사용자 권한 부여가 필요하지 않은 것으로 알려진 경우 상태는 Qt::PermissionStatus::Granted 입니다.
사용자가 명시적으로 요청된 permission 을 거부하거나 permission 이 지정된 플랫폼의 애플리케이션에 액세스하거나 적용할 수 없는 것으로 알려진 경우, 상태는 Qt::PermissionStatus::Denied 입니다.
요청 결과는 Qt::PermissionStatus::Undetermined 이 되지 않습니다.
참고: 권한은 메인 스레드에서만 요청할 수 있습니다.
이 기능은 Qt 6.5에 도입되었습니다.
checkPermission() 및 애플리케이션 권한을참조하세요 .
[since 6.5]
template <typename Functor> void QCoreApplication::requestPermission(const QPermission &permission, const QObject *context, Functor functor)
context 의 컨텍스트에서 주어진 permission 을 요청합니다.
요청이 준비되면 functor 은 functor(const QPermission &permission)
으로 호출되며 permission
은 요청 결과를 설명합니다.
functor 는 독립형 또는 정적 멤버 함수가 될 수 있습니다:
qApp->requestPermission(QCameraPermission{}, context, &permissionUpdated);
람다
qApp->requestPermission(QCameraPermission{}, context, [](const QPermission &permission) { });
또는 context 객체의 슬롯일 수 있습니다:
qApp->requestPermission(QCameraPermission{}, this, &CamerWidget::permissionUpdated);
functor 은 context 객체의 스레드에서 호출됩니다. 요청이 완료되기 전에 context 이 파괴되면 functor 은 호출되지 않습니다.
사용자가 애플리케이션에 요청된 permission 을 명시적으로 허용하거나 permission 이 지정된 플랫폼에서 사용자 권한 부여가 필요하지 않은 것으로 알려진 경우 상태는 Qt::PermissionStatus::Granted 입니다.
사용자가 명시적으로 요청된 permission 을 거부하거나 permission 이 지정된 플랫폼에서 애플리케이션에 액세스할 수 없거나 적용되지 않는 것으로 알려진 경우, 상태는 Qt::PermissionStatus::Denied 입니다.
요청 결과는 Qt::PermissionStatus::Undetermined 이 되지 않습니다.
참고: 권한은 메인 스레드에서만 요청할 수 있습니다.
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.5에 도입되었습니다.
checkPermission() 및 애플리케이션 권한을참조하세요 .
[static]
bool QCoreApplication::sendEvent(QObject *receiver, QEvent *event)
notify() 함수를 사용하여 event 이벤트를 수신자 receiver 로 직접 전송합니다. 이벤트 핸들러에서 반환된 값을 반환합니다.
이벤트가 전송되어도 이벤트는 삭제되지 않습니다. 일반적인 방법은 예를 들어 스택에 이벤트를 만드는 것입니다:
QMouseEvent event(QEvent::MouseButtonPress, pos, 0, 0, 0); QApplication::sendEvent(mainWindow, &event);
postEvent() 및 notify()도 참조하세요 .
[static]
void QCoreApplication::sendPostedEvents(QObject *receiver = nullptr, int event_type = 0)
이전에 QCoreApplication::postEvent()로 큐에 대기 중이고 receiver 객체에 대한 이벤트이며 이벤트 유형이 event_type 인 모든 이벤트를 즉시 디스패치합니다.
창 시스템의 이벤트는 이 함수가 아니라 processEvents()에 의해 발송됩니다.
receiver 가 nullptr
인 경우 모든 객체에 대해 event_type 의 이벤트가 전송됩니다. event_type 이 0이면 receiver 에 대한 모든 이벤트가 전송됩니다.
참고: 이 메서드는 QObject 매개변수 receiver 가 있는 스레드에서 호출해야 합니다.
postEvent()도 참조하세요 .
[static]
void QCoreApplication::setAttribute(Qt::ApplicationAttribute attribute, bool on = true)
on 이 참이면 attribute 속성을 설정하고, 그렇지 않으면 속성을 지웁니다.
참고: QCoreApplication 인스턴스를 만들기 전에 일부 애플리케이션 속성을 설정해야 합니다. 자세한 내용은 Qt::ApplicationAttribute 문서를 참조하세요.
testAttribute()도 참조하세요 .
[static]
void QCoreApplication::setEventDispatcher(QAbstractEventDispatcher *eventDispatcher)
메인 스레드의 이벤트 디스패처를 eventDispatcher 로 설정합니다. 이는 아직 이벤트 디스패처가 설치되어 있지 않은 경우에만 가능합니다. 즉, QCoreApplication 이 인스턴스화되기 전입니다. 이 메서드는 객체의 소유권을 가져옵니다.
eventDispatcher()도 참조하세요 .
[static]
void QCoreApplication::setLibraryPaths(const QStringList &paths)
QLibrary 로 플러그인을 로드할 때 검색할 디렉터리 목록을 paths 으로 설정합니다. 기존 경로는 모두 삭제되고 경로 목록은 paths 에 지정된 경로와 애플리케이션 경로로 구성됩니다.
QCoreApplication 인스턴스가 파괴되면 라이브러리 경로가 기본값으로 재설정됩니다.
libraryPaths(), addLibraryPath(), removeLibraryPath() 및 QLibrary 을참조하세요 .
[static]
void QCoreApplication::setSetuidAllowed(bool allow)
allow 가 참이면 애플리케이션이 UNIX 플랫폼에서 setuid를 실행할 수 있습니다.
allow 이 false(기본값)이고 Qt가 애플리케이션이 실제 사용자 ID와 다른 유효 사용자 ID로 실행 중인 것을 감지하면 QCoreApplication 인스턴스가 생성될 때 애플리케이션이 중단됩니다.
Qt는 공격 표면이 넓기 때문에 세튜이드 프로그램에 적합한 솔루션이 아닙니다. 그러나 일부 애플리케이션은 역사적인 이유로 이러한 방식으로 실행해야 할 수도 있습니다. 이 플래그를 설정하면 이 경우 Qt가 애플리케이션을 중단하지 못하므로 QCoreApplication 인스턴스가 생성되기 전에 설정해야 합니다.
참고: 이 옵션은 보안 위험을 초래하므로 활성화하지 않는 것이 좋습니다. 이 애플리케이션이 이 플래그를 활성화하고 자식 프로세스를 시작하는 경우, 가능한 한 빨리 setuid(2)
을 호출하거나 늦어도 QProcess::UnixProcessParameters::ResetIds 플래그를 사용하여 권한을 삭제해야 합니다.
isSetuidAllowed()도 참조하세요 .
[static]
bool QCoreApplication::startingUp()
애플리케이션 객체가 아직 생성되지 않은 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
closingDown()도 참조하세요 .
[static]
bool QCoreApplication::testAttribute(Qt::ApplicationAttribute attribute)
attribute 속성이 설정된 경우 true
를 반환하고, 그렇지 않으면 false
를 반환합니다.
setAttribute()도 참조하세요 .
[static]
QString QCoreApplication::translate(const char *context, const char *sourceText, const char *disambiguation = nullptr, int n = -1)
설치된 번역 파일을 쿼리하여 sourceText 에 대한 번역 텍스트를 반환합니다. 번역 파일은 가장 최근에 설치된 파일부터 처음 설치된 파일까지 검색됩니다.
QObject::tr()는 이 기능을 더 편리하게 제공합니다.
context 는 일반적으로 클래스 이름(예: "MyDialog")이고 sourceText 는 영어 텍스트 또는 짧은 식별 텍스트입니다.
disambiguation 는 동일한 sourceText 가 동일한 컨텍스트 내에서 다른 역할에 사용되는 경우의 식별 문자열입니다. 기본값은 nullptr
입니다.
컨텍스트, 동의어 및 주석에 대한 자세한 내용은 QTranslator 및 QObject::tr() 문서를 참조하세요.
n 는 %n
와 함께 사용하여 복수형을 지원합니다. 자세한 내용은 QObject::tr()를 참조하세요.
번역 파일에 context 에 sourceText 에 대한 번역이 없는 경우 이 함수는 QString 에 해당하는 sourceText 을 반환합니다.
이 함수는 가상이 아닙니다. QTranslator 을 서브클래싱하여 대체 번역 기술을 사용할 수 있습니다.
참고: 이 함수는 스레드 안전합니다.
QObject::tr(), installTranslator(), removeTranslator() 및 Internationalization and Translations 를참조하세요 .
관련 비회원
void qAddPostRoutine(QtCleanUpFunction ptr)
QCoreApplication 소멸자에서 호출될 전역 루틴을 추가합니다. 이 함수는 일반적으로 프로그램 전체 기능에 대한 정리 루틴을 추가하는 데 사용됩니다.
정리 루틴은 추가된 순서의 역순으로 호출됩니다.
ptr 에 지정된 함수는 인수를 받지 않아야 하며 아무것도 반환하지 않아야 합니다. 예를 들어
static int *global_ptr = nullptr; static void cleanup_ptr() { delete [] global_ptr; global_ptr = nullptr; } 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; };
올바른 부모 객체를 선택하면 적절한 순간에 모듈의 데이터를 정리할 수 있습니다.
참고: 이 함수는 Qt 5.10부터 스레드 안전합니다.
참고: 이 함수는 스레드 안전합니다.
qRemovePostRoutine()도 참조하세요 .
void qRemovePostRoutine(QtCleanUpFunction ptr)
QCoreApplication 소멸자가 호출하는 루틴 목록에서 ptr 에 지정된 정리 루틴을 제거합니다. 루틴이 이전에 qAddPostRoutine() 호출에 의해 목록에 추가되었어야 하며, 그렇지 않으면 이 함수는 효과가 없습니다.
참고: 이 함수는 Qt 5.10부터 스레드 안전합니다.
참고: 이 함수는 스레드 안전합니다.
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 생성자 끝에서 GUI 초기화 전에 실행됩니다. 함수에 GUI 코드가 필요한 경우 타이머(또는 큐에 대기 중인 호출)를 사용하여 나중에 이벤트 루프에서 초기화를 수행하세요.
QCoreApplication 을 삭제하고 다른 QCoreApplication 을 만들면 시작 함수가 다시 호출됩니다.
참고: 이 매크로는 링커에 의해 제거되어 함수가 전혀 호출되지 않을 수 있으므로 애플리케이션에 정적으로 링크된 라이브러리 코드에 사용하기에 적합하지 않습니다.
참고: 이 매크로는 재입력됩니다.
Q_DECLARE_TR_FUNCTIONS(context)
Q_DECLARE_TR_FUNCTIONS() 매크로는 이 서명을 사용하여 번역 함수 tr()
를 선언하고 구현합니다:
static inline QString tr(const char *sourceText, const char *comment = nullptr);
이 매크로는 QObject 에서 상속하지 않는 클래스에서 QObject::tr()를 사용하려는 경우에 유용합니다.
Q_DECLARE_TR_FUNCTIONS()는 클래스 정의의 맨 위(첫 번째 public:
또는 protected:
앞)에 나타나야 합니다. 예를 들어
class MyMfcView : public CView { Q_DECLARE_TR_FUNCTIONS(MyMfcView) public: MyMfcView(); ... };
context 매개변수는 일반적으로 클래스 이름이지만 어떤 텍스트든 사용할 수 있습니다.
Q_OBJECT 및 QObject::tr()도 참조하세요 .
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.