QApplication Class
Die Klasse `QApplication` verwaltet den Ablauf und die wichtigsten Einstellungen der GUI-Anwendung. Mehr...
| Header: | #include <QApplication> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Erbt von: | QGuiApplication |
Eigenschaften
|
|
Öffentliche Funktionen
| QApplication(int &argc, char **argv) | |
| virtual | ~QApplication() |
| bool | autoSipEnabled() const |
| QString | styleSheet() const |
Neu implementierte öffentliche Funktionen
| virtual bool | notify(QObject *receiver, QEvent *e) override |
Öffentliche Slots
| void | aboutQt() |
| void | closeAllWindows() |
| void | setAutoSipEnabled(const bool enabled) |
| void | setStyleSheet(const QString &sheet) |
Signale
| void | focusChanged(QWidget *old, QWidget *now) |
Statische öffentliche Mitglieder
| QWidget * | activeModalWidget() |
| QWidget * | activePopupWidget() |
| QWidget * | activeWindow() |
| void | alert(QWidget *widget, int msec = 0) |
| QWidgetList | allWidgets() |
| void | beep() |
| int | cursorFlashTime() |
| int | doubleClickInterval() |
| int | exec() |
| QWidget * | focusWidget() |
| QFont | font() |
| QFont | font(const QWidget *widget) |
| QFont | font(const char *className) |
| bool | isEffectEnabled(Qt::UIEffect effect) |
| int | keyboardInputInterval() |
| QPalette | palette(const QWidget *widget) |
| QPalette | palette(const char *className) |
| void | setCursorFlashTime(int) |
| void | setDoubleClickInterval(int) |
| void | setEffectEnabled(Qt::UIEffect effect, bool enable = true) |
| void | setFont(const QFont &font, const char *className = nullptr) |
| void | setKeyboardInputInterval(int) |
| void | setPalette(const QPalette &palette, const char *className = nullptr) |
| void | setStartDragDistance(int l) |
| void | setStartDragTime(int ms) |
| void | setStyle(QStyle *style) |
| QStyle * | setStyle(const QString &style) |
| void | setWheelScrollLines(int) |
| int | startDragDistance() |
| int | startDragTime() |
| QStyle * | style() |
| QWidget * | topLevelAt(const QPoint &point) |
| QWidget * | topLevelAt(int x, int y) |
| QWidgetList | topLevelWidgets() |
| int | wheelScrollLines() |
| QWidget * | widgetAt(const QPoint &point) |
| QWidget * | widgetAt(int x, int y) |
Neu implementierte geschützte Funktionen
| virtual bool | event(QEvent *e) override |
Makros
Ausführliche Beschreibung
QApplication ist eine Spezialisierung von ` QGuiApplication ` und bietet einige Funktionen, die für Anwendungen auf Basis von ` QWidget` erforderlich sind. Es übernimmt die widgetspezifische Initialisierung und Finalisierung.
Für jede GUI-Anwendung, die Qt verwendet, gibt es genau ein QApplication-Objekt, unabhängig davon, ob die Anwendung zu einem bestimmten Zeitpunkt 0, 1, 2 oder mehr Fenster hat. Für nicht aufQWidget basierende Qt-Anwendungen sollte stattdessen QGuiApplication verwendet werden, da diese nicht von der Bibliothek QtWidgets abhängig ist.
Einige GUI-Anwendungen bieten einen speziellen Batch-Modus, d. h., sie akzeptieren Befehlszeilenargumente zur Ausführung von Aufgaben ohne manuelles Eingreifen. In einem solchen Nicht-GUI-Modus reicht es oft aus, ein einfaches ` QCoreApplication ` zu instanziieren, um die unnötige Initialisierung von Ressourcen zu vermeiden, die für eine grafische Benutzeroberfläche benötigt werden. Das folgende Beispiel zeigt, wie man dynamisch eine Instanz des entsprechenden Anwendungstyps erstellt:
QCoreApplication* createApplication(int &argc, char *argv[])
{
for (int i = 1; i < argc; ++i) {
if (!qstrcmp(argv[i], "-no-gui"))
return new QCoreApplication(argc, argv);
}
return new QApplication(argc, argv);
}
int main(int argc, char* argv[])
{
QScopedPointer<QCoreApplication> app(createApplication(argc, argv));
if (qobject_cast<QApplication *>(app.data())) {
// start GUI version...
} else {
// start non-GUI version...
}
return app->exec();
}Auf das QApplication-Objekt kann über die Funktion ` instance()` zugegriffen werden, die einen Zeiger zurückgibt, der dem globalen Zeiger ` qApp ` entspricht.
Die Hauptaufgaben von QApplication sind:
- Es initialisiert die Anwendung mit den Desktop-Einstellungen des Benutzers, wie z. B. ` palette()`, ` font()` und ` doubleClickInterval()`. Es behält den Überblick über diese Eigenschaften für den Fall, dass der Benutzer den Desktop global ändert, beispielsweise über eine Art Systemsteuerung.
- Es übernimmt die Ereignisverarbeitung, d. h., es empfängt Ereignisse vom zugrunde liegenden Fenstersystem und leitet sie an die entsprechenden Widgets weiter. Mit den Funktionen „ sendEvent “ () und „ postEvent “ () können Sie eigene Ereignisse an Widgets senden.
- Es wertet gängige Befehlszeilenargumente aus und passt seinen internen Zustand entsprechend an. Weitere Details finden Sie im Abschnitt „ constructor documentation “ weiter unten.
- Es definiert das „Look and Feel“ der Anwendung, das in einem QStyle -Objekt gekapselt ist. Dies kann zur Laufzeit mit setStyle() geändert werden.
- Es ermöglicht die Lokalisierung von Zeichenfolgen, die für den Benutzer sichtbar sind, über ` translate()`.
- Es stellt einige „magische“ Objekte wie das ` clipboard()` zur Verfügung.
- Es kennt die Fenster der Anwendung. Mit ` widgetAt()` können Sie abfragen, welches Widget sich an einer bestimmten Position befindet, und mit ` topLevelWidgets()` sowie ` closeAllWindows()` eine Liste abrufen usw.
- Es verwaltet die Mauszeigerbehandlung der Anwendung, siehe setOverrideCursor()
Da das QApplication-Objekt so viele Initialisierungsaufgaben übernimmt, muss es erstellt werden, bevor andere Objekte, die mit der Benutzeroberfläche in Zusammenhang stehen, erstellt werden. QApplication verarbeitet außerdem allgemeine Befehlszeilenargumente. Daher ist es in der Regel ratsam, es zu erstellen, bevor in der Anwendung selbst eine Interpretation oder Änderung von argv erfolgt.
| Funktionsgruppen | |
|---|---|
| Systemeinstellungen | desktopSettingsAware(), ` setDesktopSettingsAware()`, ` cursorFlashTime()`, ` setCursorFlashTime()`, ` doubleClickInterval()`, ` setDoubleClickInterval()`, ` setKeyboardInputInterval()`, ` wheelScrollLines()`, ` setWheelScrollLines()`, ` palette()`, ` setPalette()`, ` font()`, ` setFont()`. |
| Ereignisbehandlung | exec(), processEvents(), exit(), quit(). sendEvent(), postEvent(), sendPostedEvents(), removePostedEvents(), notify(). |
| GUI-Stile | style(), setStyle(). |
| Textverarbeitung | installTranslator(), removeTranslator() translate(). |
| Widgets | allWidgets(), topLevelWidgets(), activePopupWidget(), activeModalWidget(), clipboard(), focusWidget(), activeWindow(), widgetAt(). |
| Erweiterte Cursor-Steuerung | overrideCursor(), setOverrideCursor(), restoreOverrideCursor(). |
| Verschiedenes | closeAllWindows(), startingUp(), closingDown(). |
Siehe auch QCoreApplication, QAbstractEventDispatcher, QEventLoop und QSettings.
Dokumentation zu den Eigenschaften
autoSipEnabled : bool
Schaltet die automatische Anzeige des SIP (Software-Eingabefelds) ein oder aus
Setzen Sie diese Eigenschaft auf „ true “, um das SIP automatisch anzuzeigen, wenn Widgets aufgerufen werden, die Tastatureingaben akzeptieren. Diese Eigenschaft wirkt sich nur auf Widgets aus, bei denen das Attribut „WA_InputMethodEnabled“ gesetzt ist, und wird in der Regel verwendet, um auf Geräten mit sehr wenigen oder gar keinen Tasten eine virtuelle Tastatur zu starten.
Die Eigenschaft wirkt sich nur auf Plattformen aus, die Software-Eingabefelder verwenden.
Der Standardwert ist plattformabhängig.
Zugriffsfunktionen:
| bool | autoSipEnabled() const |
| void | setAutoSipEnabled(const bool enabled) |
cursorFlashTime : int
Diese Eigenschaft gibt die Blinkdauer des Textcursors in Millisekunden an
Die Blinkdauer ist die Zeit, die benötigt wird, um die Caret-Anzeige darzustellen, umzukehren und wiederherzustellen. Normalerweise wird der Textcursor für die Hälfte der Cursor-Blinkdauer angezeigt und dann für die gleiche Zeit ausgeblendet, dies kann jedoch variieren.
Der Standardwert unter X11 beträgt 1000 Millisekunden. Unter Windows wird der Wert „ Control Panel “ verwendet; durch das Setzen dieser Eigenschaft wird die Blinkzeit des Cursors für alle Anwendungen festgelegt.
Wir empfehlen, dass Widgets diesen Wert nicht zwischenspeichern, da er sich jederzeit ändern kann, wenn der Benutzer die globalen Desktop-Einstellungen ändert.
Hinweis: Diese Eigenschaft kann einen negativen Wert annehmen, beispielsweise wenn das Blinken des Cursors deaktiviert ist.
Zugriffsfunktionen:
| int | cursorFlashTime() |
| void | setCursorFlashTime(int) |
doubleClickInterval : int
Diese Eigenschaft gibt das Zeitlimit in Millisekunden an, anhand dessen ein Doppelklick von zwei aufeinanderfolgenden Mausklicks unterschieden wird
Der Standardwert unter X11 beträgt 400 Millisekunden. Unter Windows und Mac OS wird der Wert des Betriebssystems verwendet.
Zugriffsfunktionen:
| int | doubleClickInterval() |
| void | setDoubleClickInterval(int) |
keyboardInputInterval : int
Diese Eigenschaft gibt die Zeitgrenze in Millisekunden an, die einen Tastenanschlag von zwei aufeinanderfolgenden Tastenanschlägen unterscheidet
Der Standardwert unter X11 beträgt 400 Millisekunden. Unter Windows und Mac OS wird der Wert des Betriebssystems verwendet.
Zugriffsfunktionen:
| int | keyboardInputInterval() |
| void | setKeyboardInputInterval(int) |
startDragDistance : int
Diese Eigenschaft legt die Mindestentfernung fest, die erforderlich ist, damit ein Drag-and-Drop-Vorgang gestartet wird.
Wenn Sie Drag-and-Drop in Ihrer Anwendung unterstützen und einen Drag-and-Drop-Vorgang starten möchten, nachdem der Benutzer den Cursor bei gedrückter Taste um eine bestimmte Strecke bewegt hat, sollten Sie den Wert dieser Eigenschaft als erforderliche Mindestentfernung verwenden.
Wenn beispielsweise die Mausposition des Klicks in ` startPos ` gespeichert ist und die aktuelle Position (z. B. im Mausbewegungsereignis) ` currentPos` lautet, können Sie mit folgendem Code feststellen, ob ein Drag-Vorgang gestartet werden soll:
if ((startPos - currentPos).manhattanLength() >=
QApplication::startDragDistance())
startTheDrag();Qt verwendet diesen Wert intern, z. B. in ` QFileDialog`.
Der Standardwert (sofern die Plattform keinen anderen Standardwert bereitstellt) beträgt 10 Pixel.
Zugriffsfunktionen:
| int | startDragDistance() |
| void | setStartDragDistance(int l) |
Siehe auch „ startDragTime()“, „ QPoint::manhattanLength()“ und „Drag and Drop“.
startDragTime : int
Diese Eigenschaft gibt die Zeit in Millisekunden an, die eine Maustaste gedrückt gehalten werden muss, bevor ein Drag-and-Drop-Vorgang beginnt
Wenn Sie Drag-and-Drop in Ihrer Anwendung unterstützen und einen Drag-and-Drop-Vorgang erst starten möchten, nachdem der Benutzer eine Maustaste eine bestimmte Zeit lang gedrückt gehalten hat, sollten Sie den Wert dieser Eigenschaft als Verzögerung verwenden.
Qt verwendet diese Verzögerung auch intern, z. B. in ` QTextEdit ` und ` QLineEdit`, um einen Drag-Vorgang zu starten.
Der Standardwert beträgt 500 ms.
Zugriffsfunktionen:
| int | startDragTime() |
| void | setStartDragTime(int ms) |
Siehe auch ` startDragDistance()` und „Drag & Drop“.
styleSheet : QString
Diese Eigenschaft enthält das Anwendungs-Stylesheet
Das Anwendungs-Stylesheet gilt für alle Widgets in der Anwendung, zusätzlich zu den Stylesheets, die für einzelne Widgets festgelegt wurden. Informationen zu den Kaskadierungsregeln finden Sie unter „Qt-Stylesheets “.
Durch das Setzen dieser Eigenschaft wird der Anwendungsstil durch einen Stil aus dem Stylesheet ersetzt, der das aktuelle ` style` umschließt, und jede spätere Änderung passt alle Widgets in der Anwendung neu an. Legen Sie das Stylesheet einmalig fest, bevor das erste Fenster angezeigt wird, und verwenden Sie es nicht, um Themen zur Laufzeit zu wechseln. Informationen dazu, wann Stylesheets überhaupt verwendet werden sollten, finden Sie unter „Styling-Ansätze“ für „ Qt Widgets “.
Wenn der Wert eine URL vom Typ „ file:/// “ ist, lädt Qt das Stylesheet aus der angegebenen Datei und löst darin enthaltene relative URLs, wie z. B. Bildverweise, relativ zum Verzeichnis dieser Datei auf. Nur das Stylesheet der Anwendung akzeptiert eine URL vom Typ „ file:/// “; „ QWidget::styleSheet “ tut dies nicht.
Standardmäßig ist diese Eigenschaft eine leere Zeichenkette, es sei denn, der Benutzer gibt beim Ausführen der Anwendung die Option „ -stylesheet “ über die Befehlszeile an; diese Option setzt diese Eigenschaft für die angegebene Datei auf eine „ file:/// “-URL.
Zugriffsfunktionen:
| QString | styleSheet() const |
| void | setStyleSheet(const QString &sheet) |
Siehe auch „ QWidget::styleSheet“ , „ setStyle()“, „Qt-Stylesheets“ und „Gestaltungsansätze für Qt Widgets “.
wheelScrollLines : int
Diese Eigenschaft gibt die Anzahl der Zeilen an, um die ein Widget gescrollt wird, wenn das Mausrad gedreht wird.
Übersteigt der Wert die Anzahl der sichtbaren Zeilen des Widgets, sollte das Widget den Scrollvorgang als einen einzelnen „Seite nach oben“- oder „Seite nach unten“-Befehl interpretieren. Handelt es sich bei dem Widget um ein „ item view class “, hängt das Ergebnis des Scrollens um eine Zeile von der Einstellung der Eigenschaft „ scroll mode “ des Widgets ab. Das Scrollen um eine Zeile kann entweder „ scroll one item “ oder „ scroll one pixel “ bedeuten.
Standardmäßig hat diese Eigenschaft den Wert 3.
Zugriffsfunktionen:
| int | wheelScrollLines() |
| void | setWheelScrollLines(int) |
Siehe auch „ QStyleHints::wheelScrollLines()“.
Dokumentation zu den Member-Funktionen
QApplication::QApplication(int &argc, char **argv)
Initialisiert das Fenstersystem und erstellt ein Anwendungsobjekt mit den Befehlszeilenargumenten unter argc in argv.
Warnung: Die Daten, auf die „ argc “ und „ argv “ verweisen, müssen während der gesamten Lebensdauer des QApplication-Objekts gültig bleiben. Außerdem muss „ argc “ größer als Null sein und „ argv “ mindestens eine gültige Zeichenkette enthalten.
Der globale Zeiger qApp verweist auf dieses Anwendungsobjekt. Es sollte nur ein einziges Anwendungsobjekt erstellt werden.
Dieses Anwendungsobjekt muss vor allen „ paint devices “ (einschließlich Widgets, Pixmaps, Bitmaps usw.) instanziiert werden.
Hinweis: „ argc “ und „ argv “ können sich ändern, da Qt die von ihm erkannten Befehlszeilenargumente entfernt.
Alle Qt-Programme unterstützen automatisch die folgenden Befehlszeilenoptionen:
- -style= style, legt den GUI-Stil der Anwendung fest. Die möglichen Werte hängen von Ihrer Systemkonfiguration ab. Wenn Sie Qt mit zusätzlichen Stilen kompiliert haben oder zusätzliche Stile als Plugins verwenden, stehen diese für die Befehlszeilenoption `
-style` zur Verfügung. Sie können den Stil auch für alle Qt-Anwendungen festlegen, indem Sie die Umgebungsvariable `QT_STYLE_OVERRIDE` setzen. - -style style, entspricht der oben aufgeführten Option.
- -stylesheet= stylesheet, legt das StyleSheet der Anwendung fest. Der Wert muss ein Pfad zu einer Datei sein, die das Style Sheet enthält.
Hinweis: Relative URLs in der Stylesheet-Datei beziehen sich auf den Pfad der Stylesheet-Datei.
- -stylesheet stylesheet entspricht der oben aufgeführten Option.
- -widgetcount, gibt am Ende eine Debug-Meldung über die Anzahl der noch nicht zerstörten Widgets und die maximale Anzahl der gleichzeitig vorhandenen Widgets aus
- -reverse, legt die Layoutrichtung der Anwendung fest auf Qt::RightToLeft
- -qmljsdebugger=, aktiviert den QML/JS-Debugger mit einem angegebenen Port. Der Wert muss das Format „port:1234[,block]“ haben, wobei „block“ optional ist und bewirkt, dass die Anwendung wartet, bis eine Verbindung zum Debugger hergestellt wird.
Siehe auch QCoreApplication::arguments().
[virtual noexcept] QApplication::~QApplication()
Beendet alle von dieser Anwendung zugewiesenen Systemressourcen des Fenstersystems. Setzt die globale Variable „ qApp “ auf „ nullptr “.
[static slot] void QApplication::aboutQt()
Zeigt ein einfaches Meldungsfenster zu Qt an. Die Meldung enthält die Versionsnummer von Qt, die von der Anwendung verwendet wird.
Dies ist nützlich für die Einbindung in das Menü „ Help “ einer Anwendung, wie im Beispiel „Menüs“ gezeigt.
Diese Funktion ist ein Komfort-Slot für ` QMessageBox::aboutQt()`.
[static] QWidget *QApplication::activeModalWidget()
Gibt das aktive modale Widget zurück.
Ein modales Widget ist ein spezielles Widget der obersten Ebene, das eine Unterklasse von ` QDialog ` darstellt und den Parameter `modal` des Konstruktors auf `true` setzt. Ein modales Widget muss geschlossen werden, bevor der Benutzer mit anderen Teilen des Programms fortfahren kann.
Modale Widgets sind in einem Stapel organisiert. Diese Funktion gibt das aktive modale Widget an der Spitze des Stapels zurück.
Siehe auch „ activePopupWidget()“ und „ topLevelWidgets()“.
[static] QWidget *QApplication::activePopupWidget()
Gibt das aktive Popup-Widget zurück.
Ein Popup-Widget ist ein spezielles Widget der obersten Ebene, das das Flag „ Qt::WType_Popup “ setzt, z. B. das Widget „ QMenu “. Wenn die Anwendung ein Popup-Widget öffnet, werden alle Ereignisse an das Popup gesendet. Auf normale Widgets und modale Widgets kann erst zugegriffen werden, wenn das Popup-Widget geschlossen ist.
Während ein Popup-Widget angezeigt wird, dürfen nur weitere Popup-Widgets geöffnet werden. Die Popup-Widgets sind in einem Stapel angeordnet. Diese Funktion gibt das aktive Popup-Widget an der Spitze des Stapels zurück.
Siehe auch „ activeModalWidget()“ und „ topLevelWidgets()“.
[static] QWidget *QApplication::activeWindow()
Gibt das oberste Anwendungsfenster zurück, das den Tastatureingabefokus hat, oder „ nullptr “, wenn kein Anwendungsfenster den Fokus hat. Es kann ein „activeWindow()“ geben, auch wenn kein „ focusWidget()“ vorhanden ist, beispielsweise wenn kein Widget in diesem Fenster Tastenereignisse akzeptiert.
Siehe auch QWidget::setFocus(), QWidget::hasFocus() und focusWidget().
[static] void QApplication::alert(QWidget *widget, int msec = 0)
Löst die Anzeige einer Meldung für „ widget “ aus, wenn das Fenster nicht das aktive Fenster ist. Die Meldung wird für „ msec “ Millisekunden angezeigt. Ist „ msec “ gleich Null (Standardwert), wird die Meldung so lange angezeigt, bis das Fenster wieder aktiv wird.
Derzeit hat diese Funktion unter Qt für Embedded Linux keine Auswirkung.
Unter macOS wirkt sich dies eher auf Anwendungsebene aus und führt dazu, dass das Anwendungssymbol im Dock auf und ab hüpft.
Unter Windows bewirkt dies, dass der Eintrag des Fensters in der Taskleiste eine Zeit lang blinkt. Ist msec gleich Null, hört das Blinken auf und der Eintrag in der Taskleiste nimmt eine andere Farbe an (derzeit Orange).
Unter X11 wird das Fenster dadurch als „erfordert Aufmerksamkeit“ markiert; das Fenster darf nicht ausgeblendet sein (d. h., es darf nicht mit `hide()` ausgeblendet werden, sondern muss in irgendeiner Form sichtbar sein), damit dies funktioniert.
[static] QWidgetList QApplication::allWidgets()
Gibt eine Liste aller Widgets in der Anwendung zurück.
Die Liste ist leer (QList::isEmpty()) wenn keine Widgets vorhanden sind.
Hinweis: Einige der Widgets sind möglicherweise ausgeblendet.
Beispiel:
void updateAllWidgets()
{
const QWidgetList allWidgets = QApplication::allWidgets();
for (QWidget *widget : allWidgets)
widget->update();
}Siehe auch ` topLevelWidgets()` und ` QWidget::isVisible()`.
[static] void QApplication::beep()
Löst einen Signalton mit der Standardlautstärke und dem Standardklang aus. Diese Funktion ist in Qt für Embedded Linux nicht verfügbar.
[static slot] void QApplication::closeAllWindows()
Schließt alle Fenster der obersten Ebene.
Diese Funktion ist besonders nützlich für Anwendungen mit vielen Fenstern der obersten Ebene.
Die Fenster werden in zufälliger Reihenfolge geschlossen, bis ein Fenster das Schließen nicht mehr akzeptiert. Die Anwendung wird beendet, sobald das letzte Fenster erfolgreich geschlossen wurde, es sei denn, „ quitOnLastWindowClosed “ ist auf „false“ gesetzt. Um das Beenden der Anwendung beispielsweise über ein Menü auszulösen, verwenden Sie „ QCoreApplication::quit()“ anstelle dieser Funktion.
Siehe auch quitOnLastWindowClosed, lastWindowClosed(), QWidget::close(), QWidget::closeEvent(), QCoreApplication::quit(), topLevelWidgets() und QWidget::isWindow().
[override virtual protected] bool QApplication::event(QEvent *e)
Implementiert: ` QGuiApplication::event(QEvent *e)`.
[static] int QApplication::exec()
Tritt in die Hauptereignisschleife ein und wartet, bis „ exit()“ aufgerufen wird; anschließend gibt sie den Wert zurück, der in „ exit()“ festgelegt wurde (dieser ist 0, wenn „ exit()“ über „ quit()“ aufgerufen wird).
Der Aufruf dieser Funktion ist erforderlich, um die Ereignisbehandlung zu starten. Die Hauptereignisschleife empfängt Ereignisse vom Fenstersystem und leitet diese an die Anwendungs-Widgets weiter.
Im Allgemeinen kann vor dem Aufruf von `exec()` keine Benutzerinteraktion stattfinden. Als Sonderfall können modale Widgets wie ` QMessageBox ` vor dem Aufruf von `exec()` verwendet werden, da modale Widgets `exec()` aufrufen, um eine lokale Ereignisschleife zu starten.
Damit Ihre Anwendung eine Leerlaufverarbeitung durchführt, d. h. eine spezielle Funktion ausführt, wenn keine ausstehenden Ereignisse vorliegen, verwenden Sie ein „ QChronoTimer “ mit einem Timeout von 0 ns. Fortgeschrittenere Leerlaufverarbeitungsschemata lassen sich mit „ processEvents()“ realisieren.
Wir empfehlen, Aufräumcode an das Signal ` aboutToQuit()` anzuhängen, anstatt ihn in die Funktion ` main() ` Ihrer Anwendung einzufügen. Der Grund dafür ist, dass der Aufruf von `QApplication::exec()` auf einigen Plattformen möglicherweise nicht zurückkehrt. Auf der Windows-Plattform beispielsweise beendet das System den Prozess, sobald sich der Benutzer abmeldet und Qt alle Fenster der obersten Ebene geschlossen hat. Daher gibt es keine Garantie dafür, dass die Anwendung nach dem Aufruf von QApplication::exec() noch Zeit hat, ihre Ereignisschleife zu verlassen und den Code am Ende der Funktion „ main() “ auszuführen.
Siehe auch quitOnLastWindowClosed, QCoreApplication::quit(), QCoreApplication::exit(), QCoreApplication::processEvents() und QCoreApplication::exec().
[signal] void QApplication::focusChanged(QWidget *old, QWidget *now)
Dieses Signal wird ausgelöst, wenn sich der Tastaturfokus des Widgets von „ old “ zu „ now “ verschoben hat, d. h. weil der Benutzer die Tabulatortaste gedrückt, in ein Widget geklickt oder das aktive Fenster gewechselt hat. Sowohl „ old “ als auch „ now “ können „ nullptr “ sein.
Das Signal wird ausgelöst, nachdem beide Widgets über QFocusEvent über die Änderung informiert wurden.
Siehe auch QWidget::setFocus(), QWidget::clearFocus() und Qt::FocusReason.
[static] QWidget *QApplication::focusWidget()
Gibt das Anwendungs-Widget zurück, das den Fokus für die Tastatureingabe hat, oder „ nullptr “, wenn kein Widget in dieser Anwendung den Fokus hat.
Siehe auch „ QWidget::setFocus()“, „ QWidget::hasFocus()“, „ activeWindow()“ und „ focusChanged()“.
[static] QFont QApplication::font()
Gibt die Standardschriftart der Anwendung zurück.
Siehe auch setFont(), fontMetrics() und QWidget::font().
[static] QFont QApplication::font(const QWidget *widget)
Gibt die Standardschriftart für die Klasse ` widget` zurück. Wenn für die Klasse ` widget` keine Standardschriftart registriert wurde, wird die Standardschriftart der nächstübergeordneten registrierten Oberklasse zurückgegeben.
Dies ist eine überladene Funktion.
Siehe auch fontMetrics(), setFont() und QWidget::setFont().
[static] QFont QApplication::font(const char *className)
Gibt die Schriftart für Widgets des angegebenen „ className “ zurück.
Dies ist eine überladene Funktion.
Siehe auch ` setFont()` und ` QWidget::font()`.
[static] bool QApplication::isEffectEnabled(Qt::UIEffect effect)
Gibt „ true “ zurück, wenn „ effect “ aktiviert ist; andernfalls wird „ false “ zurückgegeben.
Standardmäßig versucht Qt, die Desktop-Einstellungen zu verwenden. Um dies zu verhindern, rufen Sie setDesktopSettingsAware(false) auf.
Hinweis: Auf Bildschirmen mit einer Farbtiefe von weniger als 16 Bit sindalle Effekte deaktiviert.
Siehe auch setEffectEnabled() und Qt::UIEffect.
[override virtual] bool QApplication::notify(QObject *receiver, QEvent *e)
Implementiert: ` QGuiApplication::notify` (`QObject *object, QEvent *event`).
[static] QPalette QApplication::palette(const QWidget *widget)
Wird ein ` widget ` übergeben, wird die Standardpalette für die Klasse des Widgets zurückgegeben. Dies kann die Anwendungspalette sein, muss es aber nicht. In den meisten Fällen gibt es keine spezielle Palette für bestimmte Widget-Typen, eine bemerkenswerte Ausnahme bildet jedoch das Popup-Menü unter Windows, wenn der Benutzer in den Anzeigeeinstellungen eine spezielle Hintergrundfarbe für Menüs festgelegt hat.
Siehe auch „ setPalette()“ und „ QWidget::palette()“.
[static] QPalette QApplication::palette(const char *className)
Gibt die Palette für Widgets des angegebenen „ className “ zurück.
Dies ist eine überladene Funktion.
Siehe auch ` setPalette()` und ` QWidget::palette()`.
[static] void QApplication::setEffectEnabled(Qt::UIEffect effect, bool enable = true)
Aktiviert den UI-Effekt „ effect “, wenn „ enable “ auf „true“ gesetzt ist; andernfalls wird der Effekt nicht verwendet.
Hinweis: Auf Bildschirmen mit einer Farbtiefe von weniger als 16 Bit sindalle Effekte deaktiviert.
Siehe auch „ isEffectEnabled()“, „ Qt::UIEffect “ und „ setDesktopSettingsAware()“.
[static] void QApplication::setFont(const QFont &font, const char *className = nullptr)
Ändert die Standardschriftart der Anwendung auf „ font “. Wird „ className “ übergeben, gilt die Änderung nur für Klassen, die von „ className “ erben (wie von „ QObject::inherits()“ gemeldet).
Beim Start der Anwendung hängt die Standardschriftart vom Fenstersystem ab. Sie kann sowohl je nach Version des Fenstersystems als auch je nach Ländereinstellung variieren. Mit dieser Funktion können Sie die Standardschriftart überschreiben; dies ist jedoch möglicherweise keine gute Idee, da beispielsweise einige Ländereinstellungen besonders große Schriftarten benötigen, um ihre Sonderzeichen darzustellen.
Warnung: Ver wendenSie diese Funktion nicht in Verbindung mit Qt-Stylesheets. Die Schriftart einer Anwendung kann mithilfe der Stylesheet-Eigenschaft „font“ angepasst werden. Um für alle QPushButtons eine fette Schriftart festzulegen, setzen Sie die Anwendungs- styleSheet() auf „QPushButton { font: bold }“.
Siehe auch font(), fontMetrics() und QWidget::setFont().
[static] void QApplication::setPalette(const QPalette &palette, const char *className = nullptr)
Ändert die Anwendungspalette auf „ palette “.
Wird „ className “ übergeben, gilt die Änderung nur für Widgets, die von „ className “ erben (wie von „ QObject::inherits()“ gemeldet). Bleibt „ className “ auf 0 gesetzt, wirkt sich die Änderung auf alle Widgets aus und überschreibt somit alle zuvor festgelegten klassenspezifischen Paletten.
Die Palette kann entsprechend dem aktuellen GUI-Stil in QStyle::polish() geändert werden.
Warnung: Verwenden Sie diese Funktion nicht in Verbindung mit Qt-Stylesheets. Bei Verwendung von Stylesheets kann die Palette eines Widgets über die Eigenschaften „color“, „background-color“, „selection-color“, „selection-background-color“ und „alternate-background-color“ angepasst werden.
Hinweis: Einige Stile verwenden die Palette nicht für alle Zeichnungen, beispielsweise wenn sie native Theme-Engines nutzen. Dies ist bei den Stilen „Windows Vista“ und „macOS“ der Fall.
Siehe auch QWidget::setPalette(), palette() und QStyle::polish().
[static] void QApplication::setStyle(QStyle *style)
Legt den GUI-Stil der Anwendung auf „ style “ fest. Die Eigentümerschaft am Stilobjekt wird an „ QApplication “ übertragen, sodass „ QApplication “ das Stilobjekt beim Beenden der Anwendung oder dann löscht, wenn ein neuer Stil festgelegt wird und der alte Stil weiterhin das übergeordnete Objekt des Anwendungsobjekts ist.
Anwendungsbeispiel:
QApplication::setStyle(QStyleFactory::create("Fusion"));Beim Wechseln des Anwendungsstils wird die Farbpalette auf die ursprünglichen Farben oder die Systemstandardwerte zurückgesetzt. Dies ist erforderlich, da bestimmte Stile die Farbpalette anpassen müssen, um vollständig mit dem Styleguide konform zu sein.
Wird der Stil festgelegt, bevor eine Palette definiert wurde, d. h. vor dem Erstellen von ` QApplication`, verwendet die Anwendung ` QStyle::standardPalette()` für die Palette.
Siehe auch ` style()`, ` QStyle`, ` setPalette()` und ` desktopSettingsAware()`.
[static] QStyle *QApplication::setStyle(const QString &style)
Fordert ein „ QStyle “-Objekt für „ style “ von „ QStyleFactory “ an.
Die Zeichenfolge muss einer der Werte von ` QStyleFactory::keys()` entsprechen, typischerweise „windows“, „windowsvista“, „fusion“ oder „macos“. Bei den Stilnamen wird die Groß-/Kleinschreibung nicht berücksichtigt.
Gibt „ nullptr “ zurück, wenn eine unbekannte „ style “ übergeben wird; andernfalls wird das zurückgegebene „ QStyle “-Objekt als GUI-Stil der Anwendung festgelegt.
Warnung: Um sicherzustellen, dass der Stil der Anwendung korrekt festgelegt wird, sollte diese Funktion nach Möglichkeit vor dem Aufruf des Konstruktors „ QApplication “ aufgerufen werden.
Dies ist eine überladene Funktion.
[static] QStyle *QApplication::style()
Gibt das Stilobjekt der Anwendung zurück.
Siehe auch „ setStyle()“ und „ QStyle “.
[static] QWidget *QApplication::topLevelAt(const QPoint &point)
Gibt das Widget der obersten Ebene an der angegebenen Adresse ` point` zurück; gibt ` nullptr ` zurück, wenn kein solches Widget vorhanden ist.
[static] QWidget *QApplication::topLevelAt(int x, int y)
Gibt das Widget der obersten Ebene an der Position (x, y) zurück; gibt 0 zurück, wenn kein solches Widget vorhanden ist.
Dies ist eine überladene Funktion.
[static] QWidgetList QApplication::topLevelWidgets()
Gibt eine Liste der Widgets der obersten Ebene (Fenster) in der Anwendung zurück.
Hinweis: Einige der Widgets der obersten Ebene sind möglicherweise ausgeblendet, beispielsweise ein Tooltip, wenn derzeit kein Tooltip angezeigt wird.
Beispiel:
void showAllHiddenTopLevelWidgets()
{
const QWidgetList topLevelWidgets = QApplication::topLevelWidgets();
for (QWidget *widget : topLevelWidgets) {
if (widget->isHidden())
widget->show();
}
}Siehe auch „ allWidgets()“, „ QWidget::isWindow()“ und „ QWidget::isHidden()“.
[static] QWidget *QApplication::widgetAt(const QPoint &point)
Gibt das Widget an der globalen Bildschirmposition „ point “ zurück oder „ nullptr “, falls sich dort kein Qt-Widget befindet.
Diese Funktion kann langsam sein.
Siehe auch QCursor::pos(), QWidget::grabMouse() und QWidget::grabKeyboard().
[static] QWidget *QApplication::widgetAt(int x, int y)
Gibt das Widget an der globalen Bildschirmposition zurück (x, y) oder nullptr, falls sich dort kein Qt-Widget befindet.
Dies ist eine überladene Funktion.
Makro-Dokumentation
qApp
Ein globaler Zeiger, der auf das eindeutige Anwendungsobjekt verweist. Er entspricht der Funktion „ QCoreApplication::instance()“, wird jedoch als „ QApplication “-Zeiger umgewandelt und ist daher nur gültig, wenn das eindeutige Anwendungsobjekt ein „ QApplication “ ist.
Siehe auch QCoreApplication::instance() und qGuiApp.
© 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.