Auf dieser Seite

QCoreApplication Class

Die Klasse „QCoreApplication“ stellt eine Ereignisschleife für Qt-Anwendungen ohne Benutzeroberfläche bereit. Mehr...

Header: #include <QCoreApplication>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Erbt von: QObject
Vererbt an:

QAndroidService und QGuiApplication

Eigenschaften

Öffentliche Funktionen

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)

Öffentliche Slots

void exit(int returnCode = 0)
void quit()

Signale

void aboutToQuit()

Statische öffentliche Mitglieder

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)

Neu implementierte geschützte Funktionen

virtual bool event(QEvent *e) override
void qAddPostRoutine(QtCleanUpFunction ptr)
void qRemovePostRoutine(QtCleanUpFunction ptr)

Makros

Q_COREAPP_STARTUP_FUNCTION(QtStartUpFunction ptr)
Q_DECLARE_TR_FUNCTIONS(context)

Ausführliche Beschreibung

Diese Klasse wird von Nicht-GUI-Anwendungen verwendet, um deren Ereignisschleife bereitzustellen. Für Nicht-GUI-Anwendungen, die Qt verwenden, sollte genau ein QCoreApplication-Objekt vorhanden sein. Informationen zu GUI-Anwendungen finden Sie unter QGuiApplication. Informationen zu Anwendungen, die das Modul „ Qt Widgets “ verwenden, finden Sie unter QApplication.

QCoreApplication enthält die Haupt-Ereignisschleife, in der alle Ereignisse vom Betriebssystem (z. B. Timer- und Netzwerkereignisse) sowie aus anderen Quellen verarbeitet und weitergeleitet werden. Außerdem übernimmt sie die Initialisierung und den Abbau der Anwendung sowie system- und anwendungsweite Einstellungen.

Die Ereignisschleife und die Ereignisverarbeitung

Die Ereignisschleife wird mit einem Aufruf von ` exec()` gestartet. Lang andauernde Vorgänge können ` processEvents()` aufrufen, um die Reaktionsfähigkeit der Anwendung aufrechtzuerhalten.

Im Allgemeinen empfehlen wir, ein `QCoreApplication`-, ` QGuiApplication `- oder ` QApplication `-Objekt in Ihrer ` main() `-Funktion so früh wie möglich zu erstellen. ` exec()` kehrt erst zurück, wenn die Ereignisschleife beendet wird, z. B. wenn ` quit()` aufgerufen wird.

Außerdem stehen mehrere statische Hilfsfunktionen zur Verfügung. Das QCoreApplication-Objekt ist über ` instance()` zugänglich. Ereignisse können mit ` sendEvent()` gesendet oder mit ` postEvent()` in eine Ereigniswarteschlange gestellt werden. Ausstehende Ereignisse können mit ` removePostedEvents()` entfernt oder mit ` sendPostedEvents()` weiterverarbeitet werden.

Die Klasse stellt einen Slot „ quit()“ und ein Signal „ aboutToQuit()“ bereit.

Anwendungs- und Bibliothekspfade

Eine Anwendung verfügt über einen applicationDirPath()-Slot und ein applicationFilePath(). Bibliothekspfade (siehe QLibrary) können mit libraryPaths() abgerufen und mit setLibraryPaths(), addLibraryPath() sowie removeLibraryPath() bearbeitet werden.

Internationalisierung und Übersetzungen

Übersetzungsdateien können mit den Funktionen ` installTranslator()` und ` removeTranslator()` hinzugefügt oder entfernt werden. Anwendungsstrings können mit der Funktion ` translate()` übersetzt werden. Die Funktion ` QObject::tr()` ist auf Basis von ` translate()` implementiert.

Zugriff auf Befehlszeilenargumente

Auf die Befehlszeilenargumente, die an den Konstruktor von QCoreApplication übergeben werden, sollte über die Funktion arguments() zugegriffen werden.

Hinweis: QCoreApplication entfernt die Option „ -qmljsdebugger="..." “. Es analysiert das Argument von „ qmljsdebugger “ und entfernt anschließend diese Option sowie deren Argument.

Für eine erweiterte Verarbeitung von Befehlszeilenoptionen erstellen Sie eine ` QCommandLineParser`.

Ländereinstellungen

Unter Unix/Linux ist Qt standardmäßig so konfiguriert, dass es die System-Lokalisierungseinstellungen verwendet. Dies kann bei der Verwendung von POSIX-Funktionen zu Konflikten führen, beispielsweise bei der Konvertierung zwischen Datentypen wie Fließkommazahlen und Zeichenketten, da sich die Notation je nach Lokalisierung unterscheiden kann. Um dieses Problem zu umgehen, rufen Sie die POSIX-Funktion ` setlocale(LC_NUMERIC,"C") ` unmittelbar nach der Initialisierung von ` QApplication`, ` QGuiApplication ` oder `QCoreApplication` auf, um die für die Zahlenformatierung verwendete Locale auf die „C“-Locale zurückzusetzen.

Siehe auch „ QGuiApplication“ , „ QAbstractEventDispatcher “, „ QEventLoop “, „Producer und Consumer mit Semaphoren“ sowie „Producer und Consumer mit Wartebedingungen“.

Dokumentation zu den Eigenschaften

applicationName : QString

Diese Eigenschaft enthält den Namen dieser Anwendung

Der Anwendungsname wird in verschiedenen Qt-Klassen und -Modulen verwendet, vor allem in „ QSettings “, wenn diese mit dem Standardkonstruktor instanziiert wird. Weitere Verwendungszwecke sind formatierte Protokollausgaben (siehe „ qSetMessagePattern()“), Ausgaben von „ QCommandLineParser “, die Standardpfade von „ QTemporaryDir “ und „ QTemporaryFile “ sowie einige Dateipfade von „ QStandardPaths “. Qt D-BusAuch „Barrierefreiheit“ und die XCB-Plattformintegration verwenden den Anwendungsnamen.

Ist er nicht festgelegt, wird standardmäßig der Name der ausführbaren Datei als Anwendungsname verwendet.

Zugriffsfunktionen:

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

Siehe auch organizationName, organizationDomain, applicationVersion und applicationFilePath().

applicationVersion : QString

Diese Eigenschaft enthält die Version dieser Anwendung

Ist sie nicht festgelegt, wird als Anwendungsversion standardmäßig ein plattformspezifischer Wert verwendet, der anhand der ausführbaren Hauptanwendung oder des Pakets ermittelt wird (seit Qt 5.9):

PlattformQuelle
Windows (klassischer Desktop)Parameter „PRODUCTVERSION“ der Ressource „VERSIONINFO“
macOS, iOS, tvOS, watchOSEigenschaft „CFBundleVersion“ der Informations-Eigenschaftsliste
AndroidEigenschaft „android:versionName“ des Manifest-Elements „AndroidManifest.xml“
HarmonyOSFeld „versionName“ der Konfigurationsdatei „app.json5“

Auf anderen Plattformen ist der Standardwert eine leere Zeichenkette.

Zugriffsfunktionen:

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

Siehe auch „ applicationName “, „ organizationName “ und „ organizationDomain “.

organizationDomain : QString

Diese Eigenschaft enthält die Internet-Domäne der Organisation, die diese Anwendung erstellt hat

Der Wert wird von der Klasse „ QSettings “ verwendet, wenn diese mit dem Standardkonstruktor instanziiert wird. Dadurch entfällt die Notwendigkeit, diese Information bei jeder Erstellung eines „ QSettings “-Objekts erneut anzugeben.

Auf dem Mac verwendet „ QSettings “ die Funktion „organizationDomain()“ als Organisation, sofern der Rückgabewert keine leere Zeichenkette ist; andernfalls wird „ organizationName()“ verwendet. Auf allen anderen Plattformen verwendet „ QSettings “ die Funktion „ organizationName()“ als Organisation.

Zugriffsfunktionen:

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

Siehe auch „ organizationName “, „ applicationName “ und „ applicationVersion “.

organizationName : QString

Diese Eigenschaft enthält den Namen der Organisation, die diese Anwendung erstellt hat

Der Wert wird von der Klasse „ QSettings “ verwendet, wenn diese mit dem Standardkonstruktor instanziiert wird. Dadurch muss diese Information nicht bei jeder Erstellung eines „ QSettings “-Objekts erneut angegeben werden.

Auf dem Mac verwendet „ QSettings “ die Methode „ organizationDomain()“ als Organisation, sofern es sich nicht um eine leere Zeichenkette handelt; andernfalls wird „organizationName()“ verwendet. Auf allen anderen Plattformen verwendet „ QSettings “ „organizationName()“ als Organisation.

Zugriffsfunktionen:

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

Siehe auch „ organizationDomain “ und „ applicationName “.

quitLockEnabled : bool

Diese Eigenschaft gibt an, ob die Verwendung der Funktion „ QEventLoopLocker “ zum Beenden der Anwendung führen kann.

Wenn diese Eigenschaft auf „ true “ gesetzt ist, wird beim Freigeben des letzten verbleibenden „ QEventLoopLocker “, der in der Anwendung ausgeführt wird, versucht, die Anwendung zu beenden.

Beachten Sie, dass der Versuch, die Anwendung zu beenden, nicht zwangsläufig dazu führt, dass die Anwendung tatsächlich beendet wird – beispielsweise, wenn noch Fenster geöffnet sind oder das Ereignis „ QEvent::Quit “ ignoriert wird.

Die Standardeinstellung ist „ true “.

Zugriffsfunktionen:

bool isQuitLockEnabled()
void setQuitLockEnabled(bool enabled)

Siehe auch „ QEventLoopLocker “.

Dokumentation zu Mitgliedsfunktionen

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

Erstellt eine Qt Core-Anwendung. Qt Core-Anwendungen sind Anwendungen ohne grafische Benutzeroberfläche. Solche Anwendungen werden in der Konsole oder als Serverprozesse verwendet.

Die Argumente ` argc ` und ` argv ` werden von der Anwendung verarbeitet und durch die Funktion ` arguments()` in einer benutzerfreundlicheren Form bereitgestellt.

Warnung: Die Daten, auf die argc und argv verweisen, müssen während der gesamten Lebensdauer des QCoreApplication-Objekts gültig bleiben. Außerdem muss argc größer als Null sein und argv muss mindestens eine gültige Zeichenkette enthalten.

[virtual noexcept] QCoreApplication::~QCoreApplication()

Löscht das „ QCoreApplication “-Objekt.

[private signal] void QCoreApplication::aboutToQuit()

Dieses Signal wird ausgelöst, wenn die Anwendung im Begriff ist, die Haupt-Ereignisschleife zu verlassen, z. B. wenn die Ebene der Ereignisschleife auf Null sinkt. Dies kann entweder nach einem Aufruf von ` quit()` aus der Anwendung heraus geschehen oder wenn der Benutzer die gesamte Desktop-Sitzung beendet.

Das Signal ist besonders nützlich, wenn Ihre Anwendung in letzter Sekunde noch Aufräumarbeiten durchführen muss. Beachten Sie, dass in diesem Zustand keine Benutzerinteraktion möglich ist.

Hinweis: Zu diesem Zeitpunkt läuft die Hauptereignisschleife noch, verarbeitet nach der Rückkehr jedoch keine weiteren Ereignisse mehr, mit Ausnahme von ` QEvent::DeferredDelete `-Ereignissen für Objekte, die über ` deleteLater()` gelöscht wurden. Wenn eine Ereignisverarbeitung erforderlich ist, verwenden Sie eine verschachtelte Ereignisschleife oder rufen Sie ` QCoreApplication::processEvents()` manuell auf.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch ` quit()`.

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

Fügt „ path “ am Anfang der Bibliothekspfadliste ein, wodurch sichergestellt wird, dass dort zuerst nach Bibliotheken gesucht wird. Ist „ path “ leer oder bereits in der Pfadliste enthalten, wird die Pfadliste nicht geändert.

Die Standardpfadliste besteht aus einem oder zwei Einträgen. Der erste ist das Installationsverzeichnis für Plugins, nämlich INSTALL/plugins, wobei INSTALL das Verzeichnis ist, in dem Qt installiert wurde. Der zweite ist das Verzeichnis der Anwendung selbst (nicht das aktuelle Verzeichnis), jedoch erst nach der Instanziierung des Objekts QCoreApplication.

Die Bibliothekspfade werden auf die Standardwerte zurückgesetzt, wenn eine Instanz von ` QCoreApplication ` zerstört wird.

Warnung: „ QLibrary “ verwendet den angegebenen Pfad derzeit nicht, um nicht-absolute Bibliothekspfade nachzuschlagen.

Siehe auch removeLibraryPath(), libraryPaths() und setLibraryPaths().

[static] QString QCoreApplication::applicationDirPath()

Gibt das Verzeichnis zurück, in dem sich die ausführbare Datei der Anwendung befindet.

Wenn Sie beispielsweise Qt im Verzeichnis „ C:\Qt “ installiert haben und das Beispiel „ regexp “ ausführen, gibt diese Funktion „C:/Qt/examples/tools/regexp“ zurück.

Unter macOS und iOS verweist dies auf das Verzeichnis, in dem sich die ausführbare Datei tatsächlich befindet; dieses kann sich in einem Anwendungsbundle befinden (sofern die Anwendung gebündelt ist).

Unter Android verweist dies auf das Verzeichnis, in dem sich die ausführbare Datei tatsächlich befindet; diese kann sich in der APK-Datei der Anwendung befinden (sofern diese mit Unterstützung für unkomprimierte Bibliotheken erstellt wurde).

Warnung: Unter Linux versucht diese Funktion, den Pfad aus dem Dateisystem unter „ /proc “ abzurufen. Gelingt dies nicht, geht sie davon aus, dass „ argv[0] “ den absoluten Dateinamen der ausführbaren Datei enthält. Die Funktion geht außerdem davon aus, dass das aktuelle Verzeichnis von der Anwendung nicht geändert wurde.

Siehe auch applicationFilePath().

[static] QString QCoreApplication::applicationFilePath()

Gibt den Dateipfad der ausführbaren Anwendungsdatei zurück.

Wenn Sie beispielsweise Qt im Verzeichnis „ /usr/local/qt “ installiert haben und das Beispiel „ regexp “ ausführen, gibt diese Funktion „/usr/local/qt/examples/tools/regexp/regexp“ zurück.

Warnung: Unter Linux versucht diese Funktion, den Pfad aus dem Dateisystem von „ /proc “ abzurufen. Gelingt dies nicht, geht sie davon aus, dass „ argv[0] “ den absoluten Dateinamen der ausführbaren Datei enthält. Die Funktion geht außerdem davon aus, dass das aktuelle Verzeichnis von der Anwendung nicht geändert wurde.

Siehe auch applicationDirPath().

[static noexcept] qint64 QCoreApplication::applicationPid()

Gibt die aktuelle Prozess-ID der Anwendung zurück.

[static] QStringList QCoreApplication::arguments()

Gibt die Liste der Befehlszeilenargumente zurück.

Normalerweise ist `arguments().at(0)` der Programmname, `arguments().at(1)` das erste Argument und `arguments().last()` das letzte Argument. Beachten Sie den Hinweis zu Windows weiter unten.

Der Aufruf dieser Funktion ist langsam – Sie sollten das Ergebnis beim Parsen der Befehlszeile in einer Variablen speichern.

Warnung: Unter Unix wird diese Liste aus den Parametern `argc` und `argv` gebildet, die im Konstruktor der Funktion `main()` übergeben werden. Die Zeichenfolgen in `argv` werden mit ` QString::fromLocal8Bit()` interpretiert; daher ist es beispielsweise nicht möglich, japanische Befehlszeilenargumente auf einem System zu übergeben, das unter einer Latin1-Locale läuft. Die meisten modernen Unix-Systeme haben diese Einschränkung nicht, da sie auf Unicode basieren.

Unter Windows wird die Liste nur dann aus den Parametern `argc` und `argv` erstellt, wenn modifizierte `argv`-/`argc`-Parameter an den Konstruktor übergeben werden. In diesem Fall können Kodierungsprobleme auftreten.

Andernfalls werden die arguments() aus dem Rückgabewert von GetCommandLine() gebildet. Infolgedessen entspricht die von arguments().at(0) zurückgegebene Zeichenkette unter Windows möglicherweise nicht genau dem Programm, mit dem die Anwendung gestartet wurde.

Siehe auch „ applicationFilePath()“ und „ QCommandLineParser “.

[since 6.5] Qt::PermissionStatus QCoreApplication::checkPermission(const QPermission &permission)

Überprüft den Status des angegebenen permission

Wenn das Ergebnis „ Qt::PermissionStatus::Undetermined “ lautet, sollte über „ requestPermission()“ eine Berechtigung angefordert werden, um die Absicht des Benutzers zu ermitteln.

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch „ requestPermission()“ und „Anwendungsberechtigungen“.

[static] bool QCoreApplication::closingDown()

Gibt „ true “ zurück, wenn die Anwendungsobjekte zerstört werden; andernfalls wird „ false “ zurückgegeben.

Siehe auch startingUp().

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

Implementiert: ` QObject::event(QEvent *e)`.

[static] QAbstractEventDispatcher *QCoreApplication::eventDispatcher()

Gibt einen Zeiger auf das Ereignis-Dispatcher-Objekt für den Hauptthread zurück. Wenn für den Thread kein Ereignis-Dispatcher vorhanden ist, gibt diese Funktion ` nullptr` zurück.

Siehe auch ` setEventDispatcher()`.

[static] int QCoreApplication::exec()

Tritt in die Haupt-Ereignisschleife ein und wartet, bis „ exit()“ aufgerufen wird. Gibt den Wert zurück, der an „ exit()“ übergeben wurde (dies ist 0, wenn „ exit()“ über „ quit()“ aufgerufen wird).

Diese Funktion muss aufgerufen werden, um die Ereignisverarbeitung zu starten. Die Haupt-Ereignisschleife empfängt Ereignisse vom Fenstersystem und leitet diese an die Anwendungs-Widgets weiter.

Damit Ihre Anwendung eine Leerlaufverarbeitung durchführt (indem sie eine spezielle Funktion ausführt, sobald keine ausstehenden Ereignisse vorhanden sind), verwenden Sie ein „ QChronoTimer “ mit einem Timeout von 0 ns. Fortgeschrittenere Schemata für die Leerlaufverarbeitung lassen sich mit „ processEvents()“ realisieren.

Wir empfehlen, Aufräumcode an das Signal ` aboutToQuit()` anzuschließen, anstatt ihn in die ` main() `-Funktion Ihrer Anwendung einzufügen, da der Aufruf von `exec()` auf einigen Plattformen möglicherweise nicht zurückkehrt. Wenn sich beispielsweise unter Windows ein Benutzer abmeldet, beendet das System den Prozess, nachdem Qt alle Fenster der obersten Ebene geschlossen hat. Daher gibt es keine Garantie dafür, dass die Anwendung Zeit hat, ihre Ereignisschleife zu verlassen und den Code am Ende der Funktion ` main() ` nach dem Aufruf von `exec()` auszuführen.

Siehe auch quit(), exit(), processEvents() und QApplication::exec().

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

Weist die Anwendung an, mit einem Rückgabewert zu beenden.

Nach dem Aufruf dieser Funktion verlässt die Anwendung die Hauptereignisschleife und kehrt vom Aufruf von ` exec()` zurück. Die Funktion ` exec()` gibt ` returnCode` zurück. Wenn die Ereignisschleife nicht läuft, führt diese Funktion keine Aktion aus.

Gemäß Konvention bedeutet ein ` returnCode ` von 0 Erfolg, während jeder Wert ungleich Null einen Fehler anzeigt.

Es empfiehlt sich, Signale stets über einen „ QueuedConnection “ an diesen Slot anzuschließen. Wird ein an diesen Slot angeschlossenes (nicht in der Warteschlange befindliches) Signal ausgesendet, bevor die Kontrolle in die Hauptereignisschleife gelangt (z. B. bevor „int main“ exec() aufruft), hat der Slot keine Wirkung und die Anwendung wird niemals beendet. Die Verwendung einer Verbindung in der Warteschlange stellt sicher, dass der Slot erst aufgerufen wird, nachdem die Steuerung in die Hauptereignisschleife gelangt ist.

Beachten Sie, dass diese Funktion im Gegensatz zur gleichnamigen C-Bibliotheksfunktion nicht zum Aufrufer zurückkehrt – vielmehr wird die Ereignisverarbeitung angehalten.

Beachten Sie außerdem, dass diese Funktion nicht threadsicher ist. Sie sollte nur vom Hauptthread aus aufgerufen werden (dem Thread, in dem das QCoreApplication -Objekt Ereignisse verarbeitet). Um die Anwendung von einem anderen Thread aus zum Beenden aufzufordern, verwenden Sie entweder QCoreApplication::quit() oder rufen Sie diese Funktion stattdessen vom Hauptthread aus mit QMetaMethod::invokeMethod() auf.

Siehe auch ` quit()` und ` exec()`.

void QCoreApplication::installNativeEventFilter(QAbstractNativeEventFilter *filterObj)

Installiert einen Ereignisfilter „ filterObj “ für alle nativen Ereignisse, die von der Anwendung im Hauptthread empfangen werden.

Der Ereignisfilter „ filterObj “ empfängt Ereignisse über seine Funktion „ nativeEventFilter()“, die für alle im Hauptthread empfangenen nativen Ereignisse aufgerufen wird.

Die Funktion ` QAbstractNativeEventFilter::nativeEventFilter()` sollte `true` zurückgeben, wenn das Ereignis gefiltert, d. h. gestoppt, werden soll. Sie sollte `false` zurückgeben, um die normale Qt-Verarbeitung fortzusetzen: Das native Ereignis kann dann in ein ` QEvent ` umgewandelt und durch die Standard-Qt- event -Filterung, z. B. ` QObject::installEventFilter()`, verarbeitet werden.

Sind mehrere Ereignisfilter installiert, wird der zuletzt installierte Filter zuerst aktiviert.

Hinweis: Die hier festgelegte Filterfunktion empfängt native Nachrichten, d. h. MSG- oder XCB-Ereignisstrukturen.

Hinweis: Native Ereignisfilter werden in der Anwendung deaktiviert, wenn das Attribut „ Qt::AA_PluginApplication “ gesetzt ist.

Um maximale Portabilität zu gewährleisten, sollten Sie nach Möglichkeit stets QEvent und QObject::installEventFilter() verwenden.

Siehe auch ` QObject::installEventFilter()`.

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

Fügt die Übersetzungsdatei „ translationFile “ zur Liste der für Übersetzungen zu verwendenden Übersetzungsdateien hinzu.

Es können mehrere Übersetzungsdateien installiert werden. Die Suche nach Übersetzungen erfolgt in umgekehrter Reihenfolge ihrer Installation, d. h. die zuletzt installierte Übersetzungsdatei wird zuerst durchsucht und die zuerst installierte Übersetzungsdatei zuletzt. Die Suche wird beendet, sobald eine Übersetzung gefunden wird, die eine übereinstimmende Zeichenfolge enthält.

Das Installieren oder Entfernen einer Übersetzungsdatei „ QTranslator “ oder das Ändern einer installierten Übersetzungsdatei „ QTranslator “ löst ein „ LanguageChange “-Ereignis für die „ QCoreApplication “-Instanz aus. Eine „ QApplication “-Instanz leitet das Ereignis an alle Widgets der obersten Ebene weiter, wo eine Neuimplementierung von „changeEvent“ die Benutzeroberfläche neu übersetzen kann, indem für den Benutzer sichtbare Zeichenfolgen über die Funktion „ tr()“ an die jeweiligen Eigenschaftssetter übergeben werden. Von „ Qt Widgets Designer“ generierte Benutzeroberflächenklassen stellen eine „ retranslateUi() “-Funktion bereit, die aufgerufen werden kann.

Die Funktion gibt bei Erfolg „ true “ und bei Fehlschlag „ false “ zurück.

Hinweis: „ QCoreApplication “ übernimmt keine Eigentumsrechte an „ translationFile “. Es liegt in der Verantwortung der Anwendung, sicherzustellen, dass – falls die Funktion „ true “ zurückgibt – das „ translationFile “-Objekt so lange bestehen bleibt, bis entweder „ removeTranslator()“ dafür aufgerufen wird oder die Anwendung beendet wird.

Siehe auch „ removeTranslator()“, „ translate()“, „ QTranslator::load()“ und „Vorbereitung auf dynamische Sprachänderungen“.

[static noexcept] QCoreApplication *QCoreApplication::instance()

Gibt einen Zeiger auf die Instanz von „ QCoreApplication “ (oder „ QGuiApplication “ bzw. „QApplication “) der Anwendung zurück.

Wenn keine Instanz zugewiesen wurde, wird ` nullptr ` zurückgegeben.

Hinweis zu Datenkonflikten: Diese Funktion sollte nicht verwendet werden, um aus Hilfsthreads heraus das Vorhandensein der Instanz „ QCoreApplication “ zu prüfen, es sei denn, der aufrufende Code wurde als C++20 kompiliert.

[static] bool QCoreApplication::isSetuidAllowed()

Gibt „true“ zurück, wenn die Anwendung auf UNIX-Plattformen mit setuid ausgeführt werden darf.

Siehe auch ` QCoreApplication::setSetuidAllowed()`.

[static] QStringList QCoreApplication::libraryPaths()

Gibt eine Liste von Pfaden zurück, die die Anwendung beim dynamischen Laden von Bibliotheken durchsucht.

Der Rückgabewert dieser Funktion kann sich ändern, wenn ein ` QCoreApplication ` erstellt wird. Es wird nicht empfohlen, diese Funktion vor der Erstellung eines ` QCoreApplication` aufzurufen. Das Verzeichnis der ausführbaren Anwendungsdatei (nicht das Arbeitsverzeichnis) ist Teil der Liste, sofern es bekannt ist. Um es bekannt zu machen, muss ein ` QCoreApplication ` erstellt werden, da dieser ` argv[0] ` verwendet, um es zu finden.

Qt stellt Standardpfade für Bibliotheken bereit, diese können jedoch auch über eine qt.conf-Datei festgelegt werden. In dieser Datei angegebene Pfade überschreiben die Standardwerte. Beachten Sie, dass die Datei „qt.conf“, wenn sie sich im Verzeichnis der ausführbaren Anwendungsdatei befindet, möglicherweise erst gefunden wird, wenn ein „ QCoreApplication “ erstellt wurde. Wird sie beim Aufruf dieser Funktion nicht gefunden, werden die Standardpfade für Bibliotheken verwendet.

Die Liste enthält die Installationsverzeichnisse für Plugins, sofern diese vorhanden sind (das Standardinstallationsverzeichnis für Plugins ist ` INSTALL/plugins`, wobei ` INSTALL ` das Verzeichnis ist, in dem Qt installiert wurde). Die durch Doppelpunkte getrennten Einträge der Umgebungsvariablen ` QT_PLUGIN_PATH ` werden immer hinzugefügt. Das Installationsverzeichnis der Plugins (und dessen Vorhandensein) kann sich ändern, sobald das Verzeichnis der ausführbaren Anwendungsdatei bekannt ist.

Warnung: Diese Funktion bezieht derzeit QLibraryInfo::LibrariesPath nicht in ihre Standardpfade ein, und QLibrary nutzt diese Funktion derzeit nicht, um nicht-absolute Bibliothekspfade zu ermitteln.

Siehe auch setLibraryPaths(), addLibraryPath(), removeLibraryPath(), QLibrary sowie „So erstellen Sie Qt-Plugins“.

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

Sendet „ event “ an „ receiver “: „ receiver “ -> „event(event)“. Gibt den Wert zurück, der vom Ereignis-Handler des Empfängers zurückgegeben wird. Beachten Sie, dass diese Funktion für alle Ereignisse aufgerufen wird, die an ein beliebiges Objekt in einem beliebigen Thread gesendet werden.

Bei bestimmten Ereignistypen (z. B. Maus- und Tastaturereignissen) wird das Ereignis an das übergeordnete Objekt des Empfängers weitergeleitet und so weiter bis zum Objekt der obersten Ebene, wenn der Empfänger kein Interesse an dem Ereignis hat (d. h., er gibt „ false “ zurück).

Es gibt fünf verschiedene Möglichkeiten, Ereignisse zu verarbeiten; die Neuimplementierung dieser virtuellen Funktion ist nur eine davon. Alle fünf Ansätze sind im Folgenden aufgeführt:

  1. Neuimplementierung von ` paintEvent()`, ` mousePressEvent()` usw. Dies ist die gängigste, einfachste und am wenigsten leistungsfähige Methode.
  2. Die Neuimplementierung dieser Funktion. Dies ist sehr leistungsstark und bietet vollständige Kontrolle; allerdings kann jeweils nur eine Unterklasse aktiv sein.
  3. Einrichten eines Ereignisfilters für ` QCoreApplication::instance()`. Ein solcher Ereignisfilter kann alle Ereignisse für alle Widgets verarbeiten und ist daher genauso leistungsstark wie die Neuimplementierung von `notify()`; außerdem ist es möglich, mehr als einen anwendungsweiten Ereignisfilter zu verwenden. Globale Ereignisfilter erkennen sogar Mausereignisse für ` disabled widgets`. Beachten Sie, dass anwendungsweite Ereignisfilter nur für Objekte aufgerufen werden, die im Hauptthread laufen.
  4. Neuimplementierung von ` QObject::event()` (wie es ` QWidget ` tut). Wenn Sie dies tun, erhalten Sie Tabulatortasten-Eingaben und sehen die Ereignisse noch vor allen widgetspezifischen Ereignisfiltern.
  5. Installieren eines Ereignisfilters für das Objekt. Ein solcher Ereignisfilter empfängt alle Ereignisse, einschließlich der Tastenanschläge „Tab“ und „Umschalt+Tab“, sofern diese das Fokus-Widget nicht ändern.

Zukünftige Entwicklung: Diese Funktion wird in Qt 7 nicht mehr für Objekte aufgerufen, die außerhalb des Hauptthreads laufen. Anwendungen, die diese Funktionalität benötigen, sollten in der Zwischenzeit andere Lösungen für ihre Anforderungen an die Ereignisüberprüfung finden. Die Änderung könnte auf den Hauptthread ausgeweitet werden, wodurch diese Funktion veraltet wäre.

Warnung: Wenn Sie diese Funktion überschreiben, müssen Sie sicherstellen, dass alle Threads, die Ereignisse verarbeiten, dies einstellen, bevor die Zerstörung Ihres Anwendungsobjekts beginnt. Dies umfasst auch Threads, die von anderen von Ihnen möglicherweise verwendeten Bibliotheken gestartet wurden, gilt jedoch nicht für Qt-eigene Threads.

Siehe auch QObject::event() und installNativeEventFilter().

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

Fügt das Ereignis „ event “ mit dem Objekt „ receiver “ als Empfänger des Ereignisses zu einer Ereigniswarteschlange hinzu und kehrt sofort zurück.

Das Ereignis muss auf dem Heap zugewiesen werden, da die Ereigniswarteschlange die Verantwortung für das Ereignis übernimmt und es löscht, sobald es gesendet wurde. Es ist nicht sicher, auf das Ereignis zuzugreifen, nachdem es gesendet wurde.

Wenn die Kontrolle an die Haupt-Ereignisschleife zurückgegeben wird, werden alle in der Warteschlange gespeicherten Ereignisse mithilfe der Funktion ` notify()` gesendet.

Ereignisse werden in absteigender „ priority “-Reihenfolge sortiert, d. h. Ereignisse mit einem hohen „ priority “-Wert werden vor Ereignissen mit einem niedrigeren „ priority “-Wert in die Warteschlange gestellt. Der „ priority “-Wert kann ein beliebiger ganzzahliger Wert sein, d. h. zwischen „INT_MAX“ und „INT_MIN“ einschließlich; weitere Details finden Sie unter Qt::EventPriority. Ereignisse mit gleichem „ priority “-Wert werden in der Reihenfolge ihrer Einreihung verarbeitet.

Hinweis: ` QObject::deleteLater()` plant das Objekt für eine verzögerte Löschung ein, die in der Regel von der Ereignisschleife des Empfängers abgewickelt wird. Läuft im Thread keine Ereignisschleife, wird die Löschung durchgeführt, sobald der Thread beendet ist. Ein gängiges und sicheres Muster besteht darin, das Signal `finished()` des Threads mit dem Slot ` deleteLater()` des Objekts zu verbinden:

QObject::connect(thread, &QThread::finished, worker, &QObject::deleteLater);

Hinweis: Diese Funktion ist threadsicher.

Siehe auch „ sendEvent()“, „ notify()“, „ sendPostedEvents()“ und „ Qt::EventPriority “.

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

Verarbeitet einige ausstehende Ereignisse für den aufrufenden Thread gemäß dem angegebenen „ flags “.

Von der Verwendung dieser Funktion wird abgeraten. Verlegen Sie stattdessen lang andauernde Operationen aus dem GUI-Thread in einen Hilfsthread und vermeiden Sie die Verarbeitung in verschachtelten Ereignisschleifen vollständig. Falls eine Ereignisverarbeitung wirklich notwendig ist, sollten Sie stattdessen die Verwendung von ` QEventLoop ` in Betracht ziehen.

Falls Sie eine lokale Schleife ausführen, die diese Funktion kontinuierlich aufruft, ohne dass eine Ereignisschleife vorhanden ist, werden die „ DeferredDelete “-Ereignisse nicht verarbeitet. Dies kann das Verhalten von Widgets beeinträchtigen, z. B. QToolTip, deren ordnungsgemäße Funktion von „ DeferredDelete “-Ereignissen abhängt. Eine Alternative wäre, sendPostedEvents() innerhalb dieser lokalen Schleife aufzurufen.

Der Aufruf dieser Funktion verarbeitet Ereignisse nur für den aufrufenden Thread und kehrt zurück, nachdem alle verfügbaren Ereignisse verarbeitet wurden. Verfügbare Ereignisse sind solche, die vor dem Funktionsaufruf in die Warteschlange gestellt wurden. Das bedeutet, dass Ereignisse, die während der Ausführung der Funktion gesendet werden, bis zu einer späteren Runde der Ereignisverarbeitung in der Warteschlange verbleiben.

Hinweis: Diese Funktion ist threadsicher.

Siehe auch ` exec()`, ` QTimer`, ` QChronoTimer`, ` QEventLoop::processEvents()` und ` sendPostedEvents()`.

[static, since 6.7] void QCoreApplication::processEvents(QEventLoop::ProcessEventsFlags flags, QDeadlineTimer deadline)

Verarbeitet ausstehende Ereignisse für den aufrufenden Thread, bis „ deadline “ abgelaufen ist oder bis keine Ereignisse mehr zu verarbeiten sind – je nachdem, was zuerst eintritt.

Von der Verwendung dieser Funktion wird abgeraten. Verlegen Sie stattdessen lang andauernde Operationen aus dem GUI-Thread in einen Hilfsthread und vermeiden Sie die Verarbeitung in verschachtelten Ereignisschleifen vollständig. Falls eine Ereignisverarbeitung wirklich notwendig ist, sollten Sie stattdessen die Verwendung von ` QEventLoop ` in Betracht ziehen.

Der Aufruf dieser Funktion verarbeitet Ereignisse nur für den aufrufenden Thread.

Hinweis: Im Gegensatz zur Überladung von ` processEvents()` verarbeitet diese Funktion auch Ereignisse, die während der Ausführung der Funktion gesendet werden.

Hinweis: Alle Ereignisse, die vor Ablauf des Timeouts in die Warteschlange gestellt wurden, werden verarbeitet, unabhängig davon, wie lange dies dauert.

Dies ist eine überladene Funktion.

Hinweis: Diese Funktion ist threadsicher.

Diese Funktion wurde in Qt 6.7 eingeführt.

Siehe auch exec(), QTimer, QChronoTimer und QEventLoop::processEvents().

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

Verarbeitet ausstehende Ereignisse für den aufrufenden Thread für ms Millisekunden oder so lange, bis keine Ereignisse mehr zu verarbeiten sind – je nachdem, welcher Zeitraum kürzer ist.

Dies entspricht dem Aufruf von:

QCoreApplication::processEvents(flags, QDeadlineTimer(ms));

Dies ist eine überladene Funktion.

[static slot] void QCoreApplication::quit()

Fordert die Anwendung auf, sich zu beenden.

Die Anforderung kann ignoriert werden, wenn die Anwendung das Beenden verhindert, beispielsweise wenn eines ihrer Fenster nicht geschlossen werden kann. Die Anwendung kann dies beeinflussen, indem sie das Ereignis „ QEvent::Quit “ auf Anwendungsebene oder die Ereignisse „ QEvent::Close “ für die einzelnen Fenster verarbeitet.

Wird das Beenden nicht unterbrochen, wird die Anwendung mit dem Rückgabewert 0 (erfolgreich) beendet.

Um die Anwendung ohne die Möglichkeit einer Unterbrechung zu beenden, rufen Sie ` exit()` direkt auf. Beachten Sie, dass diese Methode nicht threadsicher ist.

Es empfiehlt sich, Signale immer über einen ` QueuedConnection` mit diesem Slot zu verbinden. Wenn ein mit diesem Slot verbundenes (nicht in der Warteschlange stehendes) Signal ausgelöst wird, bevor die Steuerung in die Haupt-Ereignisschleife gelangt (z. B. bevor „int main“ ` exec()` aufruft), hat der Slot keine Wirkung und die Anwendung wird niemals beendet. Die Verwendung einer Verbindung mit Warteschlange stellt sicher, dass der Slot erst aufgerufen wird, nachdem die Steuerung in die Hauptereignisschleife eingetreten ist.

Beispiel:

QPushButton *quitButton = new QPushButton("Quit");
QObject::connect(quitButton, &QPushButton::clicked, &app, &QCoreApplication::quit, Qt::QueuedConnection);

Hinweis zur Thread-Sicherheit: Diese Funktion kann von jedem Thread aus aufgerufen werden, um die Beendigung der aktuell laufenden Hauptanwendungsschleife thread-sicher zu bewirken. Die Thread-Sicherheit ist jedoch nicht gewährleistet, wenn das ` QCoreApplication `-Objekt gleichzeitig zerstört wird.

Hinweis: Diese Funktion ist threadsicher.

Siehe auch „ exit()“ und „ aboutToQuit()“.

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

Entfernt „ path “ aus der Liste der Bibliothekspfade. Ist „ path “ leer oder nicht in der Pfadliste enthalten, wird die Liste nicht geändert.

Die Bibliothekspfade werden auf die Standardwerte zurückgesetzt, wenn eine Instanz von „ QCoreApplication “ zerstört wird.

Warnung: „ QLibrary “ verwendet derzeit „ libraryPaths()“ nicht zum Nachschlagen nicht-absoluter Bibliothekspfade.

Siehe auch „ addLibraryPath()“, „ libraryPaths()“ und „ setLibraryPaths()“.

void QCoreApplication::removeNativeEventFilter(QAbstractNativeEventFilter *filterObject)

Entfernt einen Ereignis filterObject n aus diesem Objekt. Die Anfrage wird ignoriert, wenn kein solcher Ereignis n installiert wurde.

Alle Ereignisfilter für dieses Objekt werden automatisch entfernt, wenn dieses Objekt zerstört wird.

Das Entfernen eines Ereignisfilters ist stets unbedenklich, selbst während der Aktivierung des Ereignisfilters (d. h. aus der Funktion `nativeEventFilter()` heraus).

Siehe auch ` installNativeEventFilter()`.

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

Entfernt alle Ereignisse des angegebenen „ eventType “, die mit „ postEvent()“ für „ receiver “ gesendet wurden.

Die Ereignisse werden nicht versendet, sondern aus der Warteschlange entfernt. Sie sollten diese Funktion niemals aufrufen müssen. Falls Sie sie dennoch aufrufen, beachten Sie bitte, dass das Löschen von Ereignissen dazu führen kann, dass „ receiver “ eine oder mehrere Invarianten verletzt.

Wenn receiver gleich nullptr ist, werden die Ereignisse von eventType für alle Objekte entfernt. Wenn eventType gleich 0 ist, werden alle Ereignisse für receiver entfernt. Sie sollten diese Funktion niemals mit einem Wert von eventType gleich 0 aufrufen.

Hinweis: Diese Funktion ist threadsicher.

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

Entfernt die Übersetzungsdatei „ translationFile “ aus der Liste der von dieser Anwendung verwendeten Übersetzungsdateien. (Die Übersetzungsdatei wird dabei nicht aus dem Dateisystem gelöscht.)

Die Funktion gibt bei Erfolg „ true “ und bei Fehlschlag „false“ zurück.

Siehe auch „ installTranslator()“, „ translate()“ und „ QObject::tr()“.

[since 6.5] template <typename Functor> void QCoreApplication::requestPermission(const QPermission &permission, Functor &&functor)

Ruft die angegebene URL „ permission “ auf.

Sobald die Anfrage bereit ist, wird „ functor “ als „ functor(const QPermission &permission) “ aufgerufen, wobei „ permission “ das Ergebnis der Anfrage beschreibt.

Die Funktion ` functor ` kann eine eigenständige oder statische Memberfunktion sein:

qApp->requestPermission(QCameraPermission{}, &permissionUpdated);

oder ein Lambda:

qApp->requestPermission(QCameraPermission{}, [](const QPermission &permission) {
});

Wenn der Benutzer der Anwendung die angeforderte permission explizit gewährt oder bekannt ist, dass die permission auf der jeweiligen Plattform keine Benutzerautorisierung erfordert, lautet der Status Qt::PermissionStatus::Granted.

Wenn der Nutzer der Anwendung die angeforderte Berechtigung „ permission “ ausdrücklich verweigert oder bekannt ist, dass die Berechtigung „ permission “ für Anwendungen auf der jeweiligen Plattform nicht zugänglich oder anwendbar ist, lautet der Status „ Qt::PermissionStatus::Denied “.

Das Ergebnis einer Anfrage lautet niemals „ Qt::PermissionStatus::Undetermined “.

Hinweis: Berechtigungen können nur vom Hauptthread aus angefordert werden.

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch „ checkPermission()“ und „Anwendungsberechtigungen“.

[since 6.5] template <typename Functor> void QCoreApplication::requestPermission(const QPermission &permission, const QObject *context, Functor functor)

Ruft die angegebene URL „ permission “ im Kontext von „ context “ auf.

Sobald die Anfrage bereit ist, wird ` functor ` als ` functor(const QPermission &permission)` aufgerufen, wobei ` permission ` das Ergebnis der Anfrage beschreibt.

Die Funktion ` functor ` kann eine eigenständige oder eine statische Memberfunktion sein:

qApp->requestPermission(QCameraPermission{}, context, &permissionUpdated);

ein Lambda:

qApp->requestPermission(QCameraPermission{}, context, [](const QPermission &permission) {
});

oder ein Slot im ` context `-Objekt:

qApp->requestPermission(QCameraPermission{}, this, &CamerWidget::permissionUpdated);

Die „ functor “ wird im Thread des „ context “-Objekts aufgerufen. Wird „ context “ zerstört, bevor die Anfrage abgeschlossen ist, wird die „ functor “ nicht aufgerufen.

Wenn der Benutzer der Anwendung die angeforderte Berechtigung „ permission “ ausdrücklich erteilt oder bekannt ist, dass „ permission “ auf der jeweiligen Plattform keine Benutzerautorisierung erfordert, lautet der Status „ Qt::PermissionStatus::Granted “.

Wenn der Benutzer der Anwendung die angeforderte Berechtigung „ permission “ ausdrücklich verweigert oder bekannt ist, dass die Berechtigung „ permission “ für Anwendungen auf der jeweiligen Plattform nicht zugänglich oder anwendbar ist, lautet der Status „ Qt::PermissionStatus::Denied “.

Das Ergebnis einer Anfrage lautet niemals „ Qt::PermissionStatus::Undetermined “.

Hinweis: Berechtigungen können nur vom Hauptthread aus angefordert werden.

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch „ checkPermission()“ und „Anwendungsberechtigungen“.

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

Sendet das Ereignis „ event “ mithilfe der Funktion „ notify()“ direkt an den Empfänger „ receiver “. Gibt den Wert zurück, der vom Ereignis-Handler zurückgegeben wurde.

Das Ereignis wird nach dem Senden nicht gelöscht. Üblicherweise wird das Ereignis auf dem Stack angelegt, zum Beispiel:

QMouseEvent event(QEvent::MouseButtonPress, localPos, globalPos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QCoreApplication::sendEvent(mainWindow, &event);

Siehe auch ` postEvent()` und ` notify()`.

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

Löst sofort alle Ereignisse aus, die zuvor mit ` QCoreApplication::postEvent()` in die Warteschlange gestellt wurden, sich auf das Objekt ` receiver ` beziehen und den Ereignistyp ` event_type` haben.

Ereignisse aus dem Fenstersystem werden nicht von dieser Funktion, sondern von ` processEvents()` versendet.

Ist receiver gleich nullptr, werden die Ereignisse vom Typ event_type für alle Objekte gesendet. Ist event_type gleich 0, werden alle Ereignisse für receiver gesendet.

Hinweis: Diese Methode muss von dem Thread aus aufgerufen werden, in dem sich ihr Parameter „ QObject “ ( receiver) befindet.

Siehe auch postEvent().

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

Setzt das Attribut „ attribute “, wenn „ on “ auf „true“ gesetzt ist; andernfalls wird das Attribut zurückgesetzt.

Hinweis: Einige Anwendungsattribute müssen vor dem Erstellen einer „ QCoreApplication “-Instanz festgelegt werden. Weitere Informationen finden Sie in der Dokumentation zu „ Qt::ApplicationAttribute “.

Siehe auch testAttribute().

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

Setzt den Ereignis-Dispatcher für den Hauptthread auf „ eventDispatcher “. Dies ist nur möglich, solange noch kein Ereignis-Dispatcher installiert ist, d. h. bevor „ QCoreApplication “ instanziiert wurde. Diese Methode übernimmt die Eigentumsrechte an dem Objekt.

Siehe auch ` eventDispatcher()`.

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

Legt die Liste der Verzeichnisse fest, die beim Laden von Plugins mit ` QLibrary ` durchsucht werden sollen, und zwar auf ` paths`. Alle vorhandenen Pfade werden gelöscht, und die Pfadliste besteht aus den in ` paths ` angegebenen Pfaden sowie dem Pfad zur Anwendung.

Die Bibliothekspfade werden auf die Standardwerte zurückgesetzt, wenn eine Instanz von „ QCoreApplication “ zerstört wird.

Warnung: „ QLibrary “ verwendet derzeit die angegebenen Pfade nicht, um nicht-absolute Bibliothekspfade nachzuschlagen.

Siehe auch libraryPaths(), addLibraryPath(), removeLibraryPath() und QLibrary.

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

Ermöglicht die Ausführung der Anwendung mit setuid auf UNIX-Plattformen, wenn „ allow “ auf „true“ gesetzt ist.

Ist „ allow “ auf „false“ gesetzt (Standard) und erkennt Qt, dass die Anwendung mit einer effektiven Benutzer-ID läuft, die sich von der tatsächlichen Benutzer-ID unterscheidet, wird die Anwendung abgebrochen, sobald eine Instanz von „ QCoreApplication “ erstellt wird.

Qt ist aufgrund seiner großen Angriffsfläche keine geeignete Lösung für setuid-Programme. Allerdings kann es aus historischen Gründen erforderlich sein, dass einige Anwendungen auf diese Weise ausgeführt werden müssen. Dieses Flag verhindert, dass Qt die Anwendung abbricht, wenn dies erkannt wird, und muss gesetzt werden, bevor eine ` QCoreApplication `-Instanz erstellt wird.

Hinweis: Es wird dringend empfohlen, diese Option nicht zu aktivieren, da sie Sicherheitsrisiken mit sich bringt. Wenn diese Anwendung das Flag dennoch aktiviert und untergeordnete Prozesse startet, sollte sie die Berechtigungen so früh wie möglich aufheben, indem sie ` setuid(2) ` für sich selbst aufruft oder spätestens mithilfe des Flags `QProcess::UnixProcessParameters::ResetIds`.

Siehe auch ` isSetuidAllowed()`.

[static] bool QCoreApplication::startingUp()

Gibt „ true “ zurück, wenn noch kein Anwendungsobjekt erstellt wurde; andernfalls wird „ false “ zurückgegeben.

Siehe auch closingDown().

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

Gibt „ true “ zurück, wenn das Attribut „ attribute “ gesetzt ist; andernfalls wird „ false “ zurückgegeben.

Siehe auch setAttribute().

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

Gibt den Übersetzungstext für sourceText zurück, indem die installierten Übersetzungsdateien abgefragt werden. Die Übersetzungsdateien werden von der zuletzt installierten Datei bis zur zuerst installierten Datei durchsucht.

QObject::tr() bietet diese Funktionalität auf bequemere Weise.

context ist in der Regel ein Klassenname (z. B. „MyDialog“) und „ sourceText “ ist entweder englischer Text oder ein kurzer identifizierender Text.

disambiguation ist eine identifizierende Zeichenfolge für den Fall, dass dieselbe „ sourceText “ in verschiedenen Rollen innerhalb desselben Kontexts verwendet wird. Standardmäßig lautet sie „ nullptr “.

Weitere Informationen zu Kontexten, Eindeutigkeitsunterscheidungen und Kommentaren finden Sie in der Dokumentation zu ` QTranslator ` und ` QObject::tr()`.

n wird in Verbindung mit %n verwendet, um Pluralformen zu unterstützen. Details finden Sie unter QObject::tr().

Wenn keine der Übersetzungsdateien eine Übersetzung für ` sourceText ` in ` context` enthält, gibt diese Funktion ein ` QString `-Äquivalent von ` sourceText` zurück.

Diese Funktion ist nicht virtuell. Sie können alternative Übersetzungstechniken verwenden, indem Sie eine Unterklasse von ` QTranslator` erstellen.

Hinweis: Diese Funktion ist threadsicher.

Siehe auch „ QObject::tr()“, „ installTranslator()“, „ removeTranslator()“ und „ Internationalization and Translations “.

Verwandte Nicht-Mitglieder

void qAddPostRoutine(QtCleanUpFunction ptr)

Fügt eine globale Routine hinzu, die vom Destruktor von „ QCoreApplication “ aufgerufen wird. Diese Funktion wird normalerweise verwendet, um Bereinigungsroutinen für programmweite Funktionen hinzuzufügen.

Die Bereinigungsroutinen werden in umgekehrter Reihenfolge ihres Hinzufügens aufgerufen.

Die durch ` ptr ` angegebene Funktion sollte keine Argumente entgegennehmen und keinen Rückgabewert liefern. Beispiel:

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
}

Beachten Sie, dass qAddPostRoutine() für eine anwendungs- oder modulweite Bereinigung oft nicht geeignet ist. Wenn das Programm beispielsweise in dynamisch geladene Module unterteilt ist, kann das betreffende Modul bereits lange vor dem Aufruf des Destruktors von ` QCoreApplication ` entladen worden sein. In solchen Fällen kann, falls die Verwendung von `qAddPostRoutine()` dennoch erwünscht ist, ` qRemovePostRoutine()` verwendet werden, um zu verhindern, dass eine Routine vom Destruktor ` QCoreApplication ` aufgerufen wird. Beispielsweise, wenn diese Routine aufgerufen wurde, bevor das Modul entladen wurde.

Für Module und Bibliotheken ist die Verwendung eines Initialisierungsmanagers mit Referenzzählung oder des Eltern-Kind-Löschmechanismus von Qt möglicherweise besser geeignet. Hier ist ein Beispiel für eine private Klasse, die den Eltern-Kind-Mechanismus nutzt, um eine Bereinigungsfunktion zum richtigen Zeitpunkt aufzurufen:

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
    }

    static MyPrivateInitStuff *p;
};

Durch die Auswahl des richtigen übergeordneten Objekts lässt sich oft erreichen, dass die Daten des Moduls zum richtigen Zeitpunkt bereinigt werden.

Hinweis: Diese Funktion ist seit Qt 5.10 threadsicher.

Hinweis: Diese Funktion ist threadsicher.

Siehe auch ` qRemovePostRoutine()`.

void qRemovePostRoutine(QtCleanUpFunction ptr)

Entfernt die durch ` ptr ` angegebene Aufräumroutine aus der Liste der Routinen, die vom Destruktor von ` QCoreApplication ` aufgerufen werden. Die Routine muss zuvor durch einen Aufruf von ` qAddPostRoutine()` zur Liste hinzugefügt worden sein, andernfalls hat diese Funktion keine Wirkung.

Hinweis: Diese Funktion ist seit Qt 5.10 threadsicher.

Hinweis: Diese Funktion ist threadsicher.

Siehe auch „ qAddPostRoutine()“.

Makro-Dokumentation

Q_COREAPP_STARTUP_FUNCTION(QtStartUpFunction ptr)

Fügt eine globale Funktion hinzu, die vom Konstruktor „ QCoreApplication “ aufgerufen wird. Dieses Makro wird normalerweise verwendet, um Bibliotheken für programmweite Funktionen zu initialisieren, ohne dass die Anwendung die Bibliothek zur Initialisierung aufrufen muss.

Die durch ` ptr ` angegebene Funktion sollte keine Argumente entgegennehmen und keinen Rückgabewert liefern. Beispiel:

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

Q_COREAPP_STARTUP_FUNCTION(preRoutineMyDebugTool)

Beachten Sie, dass die Startfunktion am Ende des Konstruktors von ` QCoreApplication ` ausgeführt wird, noch bevor die GUI-Initialisierung stattfindet. Falls in der Funktion GUI-Code erforderlich ist, verwenden Sie einen Timer (oder einen in die Warteschlange gestellten Aufruf), um die Initialisierung später über die Ereignisschleife durchzuführen.

Wenn „ QCoreApplication “ gelöscht und ein anderes „ QCoreApplication “ erstellt wird, wird die Startfunktion erneut aufgerufen.

Hinweis: Dieses Makro ist nicht für die Verwendung in Bibliothekscode geeignet, der anschließend statisch in eine Anwendung eingebunden wird, da die Funktion möglicherweise gar nicht aufgerufen wird, weil sie vom Linker entfernt wird.

Hinweis: Dieses Makro ist reentrant.

Q_DECLARE_TR_FUNCTIONS(context)

Das Makro `Q_DECLARE_TR_FUNCTIONS()` deklariert und implementiert die Übersetzungsfunktion ` tr() ` mit folgender Signatur:

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

Dieses Makro ist nützlich, wenn Sie ` QObject::tr()` in Klassen verwenden möchten, die nicht von ` QObject` erben.

Q_DECLARE_TR_FUNCTIONS() muss ganz am Anfang der Klassendefinition stehen (vor dem ersten public: oder protected:). Beispiel:

class MyMfcView : public CView
{
    Q_DECLARE_TR_FUNCTIONS(MyMfcView)

public:
    MyMfcView();
    //...
};

Der Parameter „ context “ ist normalerweise der Klassenname, kann aber beliebiger Text sein.

Siehe auch Q_OBJECT und QObject::tr().

© 2026 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.