QWidget Class
Die Klasse `QWidget` ist die Basisklasse aller Objekte der Benutzeroberfläche. Mehr...
| Header: | #include <QWidget> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Erbt von: | QObject und QPaintDevice |
| Vererbt an: | 39 TypenQAbstractButton, QAbstractSlider, QAbstractSpinBox, QCalendarWidget, QComboBox, QDesignerActionEditorInterface, QDesignerFormWindowInterface, QDesignerObjectInspectorInterface, QDesignerPropertyEditorInterface, QDesignerWidgetBoxInterface, QDialog, QDialogButtonBox, QDockWidget, QFocusFrame, QFrame, QGroupBox, QHelpFilterSettingsWidget, QHelpSearchQueryWidget, QHelpSearchResultWidget, QKeySequenceEdit, QLineEdit, QMainWindow, QMdiSubWindow, QMenu, QMenuBar, QOpenGLWidget, QProgressBar, QQuickWidget, QRhiWidget, QRubberBand, QSizeGrip, QSplashScreen, QSplitterHandle, QStatusBar, QSvgWidget, QTabBar, QTabWidget, QToolBar sowie QWizardPage |
Öffentliche Typen
| enum | RenderFlag { DrawWindowBackground, DrawChildren, IgnoreMask } |
| flags | RenderFlags |
Eigenschaften
|
|
Öffentliche Funktionen
| QWidget(QWidget*parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()) | |
| virtuell | ~QWidget() |
| bool | acceptDrops() const |
| QString | accessibleDescription() const |
| QString | accessibleIdentifier() const |
| QString | accessibleName() const |
| QList<QAction *> | actions() const |
| void | activateWindow() |
| void | addAction(QAction*action) |
(since 6.3) QAction * | addAction(const QString&text) |
(since 6.3) QAction * | addAction(const QIcon&icon, const QString&text) |
(since 6.3) QAction * | addAction(const QString&text, const QKeySequence&shortcut) |
(since 6.3) QAction * | addAction(const QIcon&icon, const QString&text, const QKeySequence&shortcut) |
(since 6.3) QAction * | addAction(const QString&text, Args &&... args) |
(since 6.3) QAction * | addAction(const QIcon&icon, const QString&text, Args &&... args) |
(since 6.3) QAction * | addAction(const QString&text, const QKeySequence&shortcut, Args &&... args) |
(since 6.3) QAction * | addAction(const QIcon&icon, const QString&text, const QKeySequence&shortcut, Args &&... args) |
(since 6.3) QAction * | addAction(const QString&text, const QObject*receiver, const char*member, Qt::ConnectionType type = Qt::AutoConnection) |
(since 6.3) QAction * | addAction(const QIcon&icon, const QString&text, const QObject*receiver, const char*member, Qt::ConnectionType type = Qt::AutoConnection) |
(since 6.3) QAction * | addAction(const QString&text, const QKeySequence&shortcut, const QObject*receiver, const char*member, Qt::ConnectionType type = Qt::AutoConnection) |
(since 6.3) QAction * | addAction(const QIcon&icon, const QString&text, const QKeySequence&shortcut, const QObject*receiver, const char*member, Qt::ConnectionType type = Qt::AutoConnection) |
| void | addActions(const QList<QAction *>&actions) |
| void | adjustSize() |
| bool | autoFillBackground() const |
| QPalette::ColorRole | backgroundRole() const |
| QBackingStore * | backingStore() const |
| QSize | baseSize() const |
| QWidget * | childAt(int x, int y) const |
| QWidget * | childAt(const QPoint&p) const |
(since 6.8) QWidget * | childAt(const QPointF&p) const |
| QRect | childrenRect() const |
| QRegion | childrenRegion() const |
| void | clearFocus() |
| void | clearMask() |
| QMargins | contentsMargins() const |
| QRect | contentsRect() const |
| Qt::ContextMenuPolicy | contextMenuPolicy() const |
| QCursor | cursor() const |
| WId | effectiveWinId() const |
| void | ensurePolished() const |
| Qt::FocusPolicy | focusPolicy() const |
| QWidget * | focusProxy() const |
| QWidget * | focusWidget() const |
| const QFont & | font() const |
| QFontInfo | fontInfo() const |
| QFontMetrics | fontMetrics() const |
| QPalette::ColorRole | foregroundRole() const |
| QRect | frameGeometry() const |
| QSize | frameSize() const |
| const QRect & | geometry() const |
| QPixmap | grab(const QRect&rectangle = QRect(QPoint(0, 0), QSize(-1, -1))) |
| void | grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = Qt::GestureFlags()) |
| void | grabKeyboard() |
| void | grabMouse() |
| void | grabMouse(const QCursor&cursor) |
| int | grabShortcut(const QKeySequence&key, Qt::ShortcutContext context = Qt::WindowShortcut) |
| QGraphicsEffect * | graphicsEffect() const |
| QGraphicsProxyWidget * | graphicsProxyWidget() const |
| bool | hasFocus() const |
| virtuell bool | hasHeightForWidth() const |
| bool | hasMouseTracking() const |
| bool | hasTabletTracking() const |
| int | height() const |
| virtuell int | heightForWidth(int w) const |
| Qt::InputMethodHints | inputMethodHints() const |
| virtuell QVariant | inputMethodQuery(Qt::InputMethodQuery query) const |
| void | insertAction(QAction*before, QAction*action) |
| void | insertActions(QAction*before, const QList<QAction *>&actions) |
| bool | isActiveWindow() const |
| bool | isAncestorOf(const QWidget*child) const |
| bool | isEnabled() const |
| bool | isEnabledTo(const QWidget*ancestor) const |
| bool | isFullScreen() const |
| bool | isHidden() const |
| bool | isMaximized() const |
| bool | isMinimized() const |
| bool | isModal() const |
| bool | isVisible() const |
| bool | isVisibleTo(const QWidget*ancestor) const |
| bool | isWindow() const |
| bool | isWindowModified() const |
| QLayout * | layout() const |
| Qt::LayoutDirection | layoutDirection() const |
| QLocale | locale() const |
(since 6.0) QPointF | mapFrom(const QWidget*parent, const QPointF&pos) const |
| QPoint | mapFrom(const QWidget*parent, const QPoint&pos) const |
(since 6.0) QPointF | mapFromGlobal(const QPointF&pos) const |
| QPoint | mapFromGlobal(const QPoint&pos) const |
(since 6.0) QPointF | mapFromParent(const QPointF&pos) const |
| QPoint | mapFromParent(const QPoint&pos) const |
(since 6.0) QPointF | mapTo(const QWidget*parent, const QPointF&pos) const |
| QPoint | mapTo(const QWidget*parent, const QPoint&pos) const |
(since 6.0) QPointF | mapToGlobal(const QPointF&pos) const |
| QPoint | mapToGlobal(const QPoint&pos) const |
(since 6.0) QPointF | mapToParent(const QPointF&pos) const |
| QPoint | mapToParent(const QPoint&pos) const |
| QRegion | mask() const |
| int | maximumHeight() const |
| QSize | maximumSize() const |
| int | maximumWidth() const |
| int | minimumHeight() const |
| QSize | minimumSize() const |
| virtuell QSize | minimumSizeHint() const |
| int | minimumWidth() const |
| void | move(int x, int y) |
| void | move(const QPoint &) |
| QWidget * | nativeParentWidget() const |
| QWidget * | nextInFocusChain() const |
| QRect | normalGeometry() const |
| void | overrideWindowFlags(Qt::WindowFlags flags) |
| const QPalette & | palette() const |
| QWidget * | parentWidget() const |
| QPoint | pos() const |
| QWidget * | previousInFocusChain() const |
| QRect | rect() const |
| void | releaseKeyboard() |
| void | releaseMouse() |
| void | releaseShortcut(int id) |
| void | removeAction(QAction*action) |
| void | render(QPaintDevice*target, const QPoint&targetOffset = QPoint(), const QRegion&sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren)) |
| void | render(QPainter*painter, const QPoint&targetOffset = QPoint(), const QRegion&sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren)) |
| void | repaint(const QRect&rect) |
| void | repaint(const QRegion&rgn) |
| void | repaint(int x, int y, int w, int h) |
| void | resize(int w, int h) |
| void | resize(const QSize &) |
| bool | restoreGeometry(const QByteArray&geometry) |
| QByteArray | saveGeometry() const |
| QScreen * | screen() const |
| void | scroll(int dx, int dy) |
| void | scroll(int dx, int dy, const QRect&r) |
| void | setAcceptDrops(bool on) |
| void | setAccessibleDescription(const QString&description) |
| void | setAccessibleIdentifier(const QString&Bezeichner) |
| void | setAccessibleName(const QString&name) |
| void | setAttribute(Qt::WidgetAttribute attribute, bool on = true) |
| void | setAutoFillBackground(bool enabled) |
| void | setBackgroundRole(QPalette::ColorRole Rolle) |
| void | setBaseSize(const QSize &) |
| void | setBaseSize(int basew, int baseh) |
| void | setContentsMargins(int left, int top, int right, int bottom) |
| void | setContentsMargins(const QMargins&margins) |
| void | setContextMenuPolicy(Qt::ContextMenuPolicy policy) |
| void | setCursor(const QCursor &) |
| void | setFixedHeight(int h) |
| void | setFixedSize(const QSize&s) |
| void | setFixedSize(int w, int h) |
| void | setFixedWidth(int w) |
| void | setFocus(Qt::FocusReason Grund) |
| void | setFocusPolicy(Qt::FocusPolicy policy) |
| void | setFocusProxy(QWidget*w) |
| void | setFont(const QFont &) |
| void | setForegroundRole(QPalette::ColorRole Rolle) |
| void | setGeometry(int x, int y, int w, int h) |
| void | setGeometry(const QRect &) |
| void | setGraphicsEffect(QGraphicsEffect*effect) |
| void | setInputMethodHints(Qt::InputMethodHints hints) |
| void | setLayout(QLayout*layout) |
| void | setLayoutDirection(Qt::LayoutDirection Richtung) |
| void | setLocale(const QLocale&locale) |
| void | setMask(const QBitmap&bitmap) |
| void | setMask(const QRegion®ion) |
| void | setMaximumHeight(int maxh) |
| void | setMaximumSize(const QSize &) |
| void | setMaximumSize(int maxw, int maxh) |
| void | setMaximumWidth(int maxw) |
| void | setMinimumHeight(int minh) |
| void | setMinimumSize(const QSize &) |
| void | setMinimumSize(int minw, int minh) |
| void | setMinimumWidth(int minw) |
| void | setMouseTracking(bool enable) |
| void | setPalette(const QPalette &) |
| void | setParent(QWidget*parent) |
| void | setParent(QWidget*parent, Qt::WindowFlags f) |
| void | setScreen(QScreen*screen) |
| void | setShortcutAutoRepeat(int id, bool enable = true) |
| void | setShortcutEnabled(int id, bool enable = true) |
| void | setSizeIncrement(const QSize &) |
| void | setSizeIncrement(int w, int h) |
| void | setSizePolicy(QSizePolicy) |
| void | setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical) |
| void | setStatusTip(const QString &) |
| void | setStyle(QStyle*style) |
| void | setTabletTracking(bool enable) |
| void | setToolTip(const QString &) |
| void | setToolTipDuration(int msec) |
| void | setUpdatesEnabled(bool enable) |
| void | setWhatsThis(const QString &) |
| void | setWindowFilePath(const QString&filePath) |
| void | setWindowFlag(Qt::WindowType flag, bool on = true) |
| void | setWindowFlags(Qt::WindowFlags type) |
| void | setWindowIcon(const QIcon&icon) |
| void | setWindowModality(Qt::WindowModality windowModality) |
| void | setWindowOpacity(qreal level) |
| void | setWindowRole(const QString&role) |
| void | setWindowState(Qt::WindowStates windowState) |
| void | setupUi(QWidget*widget) |
| QSize | size() const |
| virtuell QSize | sizeHint() const |
| QSize | sizeIncrement() const |
| QSizePolicy | sizePolicy() const |
| void | stackUnder(QWidget*w) |
| QString | statusTip() const |
| QStyle * | style() const |
| QString | styleSheet() const |
| bool | testAttribute(Qt::WidgetAttribute attribute) const |
| QString | toolTip() const |
| int | toolTipDuration() const |
| bool | underMouse() const |
| void | ungrabGesture(Qt::GestureType gesture) |
| void | unsetCursor() |
| void | unsetLayoutDirection() |
| void | unsetLocale() |
| void | update(const QRect&rect) |
| void | update(const QRegion&rgn) |
| void | update(int x, int y, int w, int h) |
| void | updateGeometry() |
| bool | updatesEnabled() const |
| QRegion | visibleRegion() const |
| QString | whatsThis() const |
| int | width() const |
| WId | winId() const |
| QWidget * | window() const |
| QString | windowFilePath() const |
| Qt::WindowFlags | windowFlags() const |
| QWindow * | windowHandle() const |
| QIcon | windowIcon() const |
| Qt::WindowModality | windowModality() const |
| qreal | windowOpacity() const |
| QString | windowRole() const |
| Qt::WindowStates | windowState() const |
| QString | windowTitle() const |
| Qt::WindowType | windowType() const |
| int | x() const |
| int | y() const |
Neu implementierte öffentliche Funktionen
| virtual QPaintEngine * | paintEngine() const override |
Öffentliche Slots
| bool | close() |
| void | hide() |
| void | lower() |
| void | raise() |
| void | repaint() |
| void | setDisabled(bool disable) |
| void | setEnabled(bool) |
| void | setFocus() |
| void | setHidden(bool hidden) |
| void | setStyleSheet(const QString &styleSheet) |
| virtual void | setVisible(bool visible) |
| void | setWindowModified(bool) |
| void | setWindowTitle(const QString &) |
| void | show() |
| void | showFullScreen() |
| void | showMaximized() |
| void | showMinimized() |
| void | showNormal() |
| void | update() |
Signale
| void | customContextMenuRequested(const QPoint &pos) |
| void | windowIconChanged(const QIcon &icon) |
| void | windowTitleChanged(const QString &title) |
Statische öffentliche Mitglieder
| QWidget * | createWindowContainer(QWindow *window, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) |
| QWidget * | find(WId id) |
| QWidget * | keyboardGrabber() |
| QWidget * | mouseGrabber() |
| void | setTabOrder(QWidget *first, QWidget *second) |
(since 6.6) void | setTabOrder(std::initializer_list<QWidget *> widgets) |
Geschützte Funktionen
| virtual void | actionEvent(QActionEvent *event) |
| virtual void | changeEvent(QEvent *event) |
| virtual void | closeEvent(QCloseEvent *event) |
| virtual void | contextMenuEvent(QContextMenuEvent *event) |
| void | create(WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true) |
| void | destroy(bool destroyWindow = true, bool destroySubWindows = true) |
| virtual void | dragEnterEvent(QDragEnterEvent *event) |
| virtual void | dragLeaveEvent(QDragLeaveEvent *event) |
| virtual void | dragMoveEvent(QDragMoveEvent *event) |
| virtual void | dropEvent(QDropEvent *event) |
| virtual void | enterEvent(QEnterEvent *event) |
| virtual void | focusInEvent(QFocusEvent *event) |
| bool | focusNextChild() |
| virtual bool | focusNextPrevChild(bool next) |
| virtual void | focusOutEvent(QFocusEvent *event) |
| bool | focusPreviousChild() |
| virtual void | hideEvent(QHideEvent *event) |
| virtual void | inputMethodEvent(QInputMethodEvent *event) |
| virtual void | keyPressEvent(QKeyEvent *event) |
| virtual void | keyReleaseEvent(QKeyEvent *event) |
| virtual void | leaveEvent(QEvent *event) |
| virtual void | mouseDoubleClickEvent(QMouseEvent *event) |
| virtual void | mouseMoveEvent(QMouseEvent *event) |
| virtual void | mousePressEvent(QMouseEvent *event) |
| virtual void | mouseReleaseEvent(QMouseEvent *event) |
| virtual void | moveEvent(QMoveEvent *event) |
| virtual bool | nativeEvent(const QByteArray &eventType, void *message, qintptr *result) |
| virtual void | paintEvent(QPaintEvent *event) |
| virtual void | resizeEvent(QResizeEvent *event) |
| virtual void | showEvent(QShowEvent *event) |
| virtual void | tabletEvent(QTabletEvent *event) |
| virtual void | wheelEvent(QWheelEvent *event) |
Neu implementierte geschützte Funktionen
| virtual bool | event(QEvent*event) override |
| virtual void | initPainter(QPainter*painter) const override |
| virtual int | metric(QPaintDevice::PaintDeviceMetric m) const override |
Geschützte Slots
| void | updateMicroFocus(Qt::InputMethodQuery query = Qt::ImQueryAll) |
Makros
Ausführliche Beschreibung
Das Widget ist das Grundelement der Benutzeroberfläche: Es empfängt Maus-, Tastatur- und andere Ereignisse vom Fenstersystem und zeichnet eine Darstellung seiner selbst auf den Bildschirm. Jedes Widget ist rechteckig und wird in einer Z-Reihenfolge sortiert. Ein Widget wird von seinem übergeordneten Widget und von den davor liegenden Widgets abgeschnitten.
Ein Widget, das nicht in ein übergeordnetes Widget eingebettet ist, wird als Fenster bezeichnet. In der Regel verfügen Fenster über einen Rahmen und eine Titelleiste, es ist jedoch auch möglich, mithilfe geeigneter „ window flags “ Fenster ohne solche Verzierungen zu erstellen. In Qt sind „ QMainWindow “ und die verschiedenen Unterklassen von „ QDialog “ die gängigsten Fenstertypen.
Der Konstruktor jedes Widgets akzeptiert ein oder zwei Standardargumente:
QWidget *parent = nullptrist das übergeordnete Element des neuen Widgets. Handelt es sich um `nullptr` (Standard), wird das neue Widget ein Fenster sein. Andernfalls ist es ein untergeordnetes Element von `parent` und unterliegt dessen Geometrie (es sei denn, Sie geben ` Qt::Window ` als Fensterflag an).Qt::WindowFlags f = { }(sofern verfügbar) legt die Fensterflags fest; die Standardeinstellung ist für die meisten Widgets geeignet, aber um beispielsweise ein Fenster ohne Fenstersystemrahmen zu erhalten, müssen Sie spezielle Flags verwenden.
QWidget verfügt über viele Mitgliedsfunktionen, von denen einige jedoch kaum direkte Funktionalität bieten; so hat QWidget beispielsweise eine „font“-Eigenschaft, nutzt diese aber selbst nie. Es gibt viele Unterklassen, die echte Funktionalität bereitstellen, wie beispielsweise „ QLabel “, „ QPushButton “, „ QListWidget “ und „ QTabWidget “.
Widgets der obersten Ebene und untergeordnete Widgets
Ein Widget ohne übergeordnetes Widget ist immer ein eigenständiges Fenster (Top-Level-Widget). Bei diesen Widgets legen die Funktionen ` setWindowTitle()` und ` setWindowIcon()` jeweils die Titelleiste und das Symbol fest.
Nicht-Fenster-Widgets sind untergeordnete Widgets, die innerhalb ihrer übergeordneten Widgets angezeigt werden. Die meisten Widgets in Qt sind vor allem als untergeordnete Widgets nützlich. So ist es beispielsweise möglich, eine Schaltfläche als Top-Level-Fenster anzuzeigen, doch die meisten Nutzer ziehen es vor, ihre Schaltflächen in andere Widgets einzubetten, wie zum Beispiel QDialog.

Ein übergeordnetes Widget, das verschiedene untergeordnete Widgets enthält.
Das obige Diagramm zeigt ein „ QGroupBox “-Widget, das verwendet wird, um verschiedene untergeordnete Widgets in einem von „ QGridLayout “ bereitgestellten Layout aufzunehmen. Die untergeordneten „ QLabel “-Widgets wurden umrandet, um ihre volle Größe darzustellen.
Wenn Sie ein QWidget zum Aufnehmen von untergeordneten Widgets verwenden möchten, sollten Sie in der Regel dem übergeordneten QWidget ein Layout hinzufügen. Weitere Informationen finden Sie unter „Layout-Verwaltung “.
Zusammengesetzte Widgets
Wenn ein Widget als Container dient, um eine Reihe von untergeordneten Widgets zu gruppieren, wird es als zusammengesetztes Widget bezeichnet. Diese lassen sich erstellen, indem man ein Widget mit den erforderlichen visuellen Eigenschaften – beispielsweise ein „ QFrame “ – konstruiert und ihm untergeordnete Widgets hinzufügt, die in der Regel durch ein Layout verwaltet werden.
Zusammengesetzte Widgets können auch erstellt werden, indem man eine Unterklasse eines Standard-Widgets wie QWidget oder QFrame bildet und das erforderliche Layout sowie die untergeordneten Widgets im Konstruktor der Unterklasse hinzufügt. Viele der mit Qt bereitgestellten Beispiele verwenden diesen Ansatz, der auch im Qt Widgets-Tutorial behandelt wird.
Benutzerdefinierte Widgets und Zeichnen
Da QWidget eine Unterklasse von QPaintDevice ist, können Unterklassen verwendet werden, um benutzerdefinierte Inhalte anzuzeigen, die mithilfe einer Reihe von Zeichenoperationen mit einer Instanz der Klasse „ QPainter “ zusammengesetzt werden. Dieser Ansatz steht im Gegensatz zum „Canvas“-Ansatz des Graphics View Frameworks, bei dem Elemente von der Anwendung zu einer Szene hinzugefügt und vom Framework selbst gerendert werden.
Jedes Widget führt alle Zeichenvorgänge innerhalb seiner Funktion ` paintEvent()` aus. Diese wird immer dann aufgerufen, wenn das Widget neu gezeichnet werden muss, sei es aufgrund einer externen Änderung oder auf Anforderung der Anwendung.
Das Beispiel „Analog Clock“ zeigt, wie ein einfaches Widget Zeichenereignisse verarbeiten kann.
Größenhinweise und Größenrichtlinien
Bei der Implementierung eines neuen Widgets ist es fast immer sinnvoll, ` sizeHint()` neu zu implementieren, um eine angemessene Standardgröße für das Widget festzulegen und mit ` setSizePolicy()` die richtige Größenrichtlinie festzulegen.
Standardmäßig werden zusammengesetzte Widgets, die keinen Größenhinweis bereitstellen, entsprechend dem Platzbedarf ihrer untergeordneten Widgets dimensioniert.
Die Größenrichtlinie ermöglicht es Ihnen, ein gutes Standardverhalten für das Layout-Managementsystem bereitzustellen, sodass andere Widgets Ihr Widget problemlos enthalten und verwalten können. Die Standard-Größenrichtlinie gibt an, dass der Größenhinweis die bevorzugte Größe des Widgets darstellt, was für viele Widgets oft ausreichend ist.
Hinweis: Die Größe von Widgets der obersten Ebene ist auf 2/3 der Höhe und Breite des Desktops begrenzt. Sie können das Widget manuell mit ` resize()` anpassen, falls diese Grenzen nicht ausreichen.
Ereignisse
Widgets reagieren auf Ereignisse, die typischerweise durch Benutzeraktionen ausgelöst werden. Qt übermittelt Ereignisse an Widgets, indem es bestimmte Ereignisbehandlungsfunktionen mit Instanzen von Unterklassen von ` QEvent ` aufruft, die Informationen zu jedem Ereignis enthalten.
Wenn Ihr Widget nur untergeordnete Widgets enthält, müssen Sie wahrscheinlich keine Ereignisbehandler implementieren. Wenn Sie einen Mausklick in einem untergeordneten Widget erkennen möchten, rufen Sie die Funktion ` underMouse()` des untergeordneten Widgets innerhalb der Funktion ` mousePressEvent()` des Widgets auf.
Das Beispiel „Scribble“ implementiert eine größere Auswahl an Ereignissen zur Behandlung von Mausbewegungen, Tastendrücken und der Größenänderung des Fensters.
Das Verhalten und den Inhalt Ihrer eigenen Widgets müssen Sie selbst bereitstellen, aber hier finden Sie einen kurzen Überblick über die für QWidget relevanten Ereignisse, beginnend mit den gängigsten:
- paintEvent() wird immer dann aufgerufen, wenn das Widget neu gezeichnet werden muss. Jedes Widget, das benutzerdefinierten Inhalt anzeigt, muss diese Funktion implementieren. Das Zeichnen mit einem „ QPainter “ darf nur in einer „ paintEvent()“-Funktion oder in einer von „ paintEvent()“ aufgerufenen Funktion erfolgen.
- resizeEvent() wird aufgerufen, wenn die Größe des Widgets geändert wurde.
- mousePressEvent() wird aufgerufen, wenn eine Maustaste gedrückt wird, während sich der Mauszeiger innerhalb des Widgets befindet, oder wenn das Widget die Maus mithilfe von ` grabMouse()` ergriffen hat. Das Drücken der Maustaste, ohne sie loszulassen, entspricht im Grunde dem Aufruf von ` grabMouse()`.
- mouseReleaseEvent() wird aufgerufen, wenn eine Maustaste losgelassen wird. Ein Widget erhält Maus-Loslass-Ereignisse, wenn es zuvor das entsprechende Maus-Druck-Ereignis erhalten hat. Das bedeutet: Wenn der Benutzer die Maustaste innerhalb Ihres Widgets drückt, die Maus dann an eine andere Stelle zieht und erst danach die Maustaste loslässt, erhält Ihr Widget das Loslass-Ereignis. Es gibt eine Ausnahme: Wenn ein Popup-Menü erscheint, während die Maustaste gedrückt gehalten wird, übernimmt dieses Popup sofort die Mausereignisse.
- mouseDoubleClickEvent() wird aufgerufen, wenn der Benutzer im Widget doppelklickt. Bei einem Doppelklick erhält das Widget ein Mausdruck-Ereignis, ein Mausloslass-Ereignis (ein Mausklick-Ereignis), einen zweiten Mausdruck, dieses Ereignis und schließlich ein zweites Mausloslass-Ereignis. (Es können auch einige Mausbewegungsereignisse empfangen werden, wenn die Maus während dieses Vorgangs nicht ruhig gehalten wird.) Es ist nicht möglich, einen Klick von einem Doppelklick zu unterscheiden, bis der zweite Klick eintrifft. (Dies ist ein Grund, warum die meisten GUI-Bücher empfehlen, Doppelklicks als Erweiterung von Einzelklicks zu behandeln, anstatt eine andere Aktion auszulösen.)
Widgets, die Tastatureingaben akzeptieren, müssen einige weitere Ereignisbehandler neu implementieren:
- keyPressEvent() wird immer dann aufgerufen, wenn eine Taste gedrückt wird, und erneut, wenn eine Taste lange genug gedrückt gehalten wurde, um die automatische Wiederholung auszulösen. Die Tasten „ Tab “ und „ Shift+Tab “ werden nur dann an das Widget weitergeleitet, wenn sie nicht von den Mechanismen zur Fokusänderung verwendet werden. Um zu erzwingen, dass diese Tasten von Ihrem Widget verarbeitet werden, müssen Sie ` QWidget::event()` neu implementieren.
- focusInEvent() wird aufgerufen, wenn das Widget den Tastaturfokus erhält (vorausgesetzt, Sie haben setFocusPolicy() aufgerufen). Gut funktionierende Widgets zeigen auf klare, aber unaufdringliche Weise an, dass sie den Tastaturfokus besitzen.
- focusOutEvent() wird aufgerufen, wenn das Widget den Tastaturfokus verliert.
Möglicherweise müssen Sie auch einige der weniger gebräuchlichen Ereignisbehandler neu implementieren:
- mouseMoveEvent() wird immer dann aufgerufen, wenn die Maus bewegt wird, während eine Maustaste gedrückt gehalten wird. Dies kann bei Drag-and-Drop-Vorgängen nützlich sein. Wenn Sie ` setMouseTracking(true)` aufrufen, erhalten Sie Mausbewegungsereignisse auch dann, wenn keine Tasten gedrückt gehalten werden. (Siehe auch den Leitfaden zu Drag-and-Drop.)
- keyReleaseEvent() wird immer dann aufgerufen, wenn eine Taste losgelassen wird und während sie gedrückt gehalten wird (sofern die Taste automatisch wiederholt wird). In diesem Fall erhält das Widget für jede Wiederholung ein Paar aus Tast loslassen- und Tastendruck-Ereignis. Die Tasten „ Tab “ und „ Shift+Tab “ werden nur dann an das Widget weitergeleitet, wenn sie nicht von den Mechanismen zur Fokusänderung verwendet werden. Um zu erzwingen, dass diese Tasten von Ihrem Widget verarbeitet werden, müssen Sie ` QWidget::event()` neu implementieren.
- wheelEvent() wird immer dann aufgerufen, wenn der Benutzer das Mausrad dreht, während das Widget den Fokus hat.
- enterEvent() wird aufgerufen, wenn die Maus in den Bildschirmbereich des Widgets eintritt. (Dies schließt den Bildschirmbereich aus, der zu einem der untergeordneten Widgets des Widgets gehört.)
- leaveEvent() wird aufgerufen, wenn die Maus den Bildschirmbereich des Widgets verlässt. Betritt die Maus ein untergeordnetes Widget, löst dies keinen Aufruf von ` leaveEvent()` aus.
- moveEvent() wird aufgerufen, wenn das Widget relativ zu seinem übergeordneten Element verschoben wurde.
- closeEvent() wird aufgerufen, wenn der Benutzer das Widget schließt (oder wenn close() aufgerufen wird).
In der Dokumentation zu ` QEvent::Type` werden außerdem einige eher obskure Ereignisse beschrieben. Um diese Ereignisse zu verarbeiten, müssen Sie ` event()` direkt neu implementieren.
Die Standardimplementierung von ` event()` verarbeitet ` Tab ` und ` Shift+Tab ` (um den Tastaturfokus zu verschieben) und leitet die meisten anderen Ereignisse an einen der oben genannten, spezialisierteren Handler weiter.
Ereignisse und der Mechanismus zu ihrer Übermittlung werden im Abschnitt „Das Ereignissystem“ behandelt.
Gruppen von Funktionen und Eigenschaften
Widget-Stylesheets
Zusätzlich zu den Standard-Widget-Stilen für jede Plattform können Widgets auch gemäß den in einem style sheet festgelegten Regeln gestaltet werden. Mit dieser Funktion können Sie das Erscheinungsbild bestimmter Widgets anpassen, um den Benutzern visuelle Hinweise auf deren Zweck zu geben. Beispielsweise könnte eine Schaltfläche auf eine bestimmte Weise gestaltet werden, um anzuzeigen, dass sie eine destruktive Aktion ausführt.
Die Verwendung von Widget-Stylesheets wird im Dokument „Qt Style Sheets “ ausführlicher beschrieben.
Transparenz und Doppelpufferung
QWidget führt automatisch eine Doppelpufferung beim Zeichnen durch, sodass kein Code für die Doppelpufferung in ` paintEvent()` geschrieben werden muss, um Flackern zu vermeiden.
Der Inhalt von übergeordneten Widgets wird standardmäßig an jedes ihrer untergeordneten Widgets weitergegeben, solange ` Qt::WA_PaintOnScreen ` nicht gesetzt ist. Benutzerdefinierte Widgets können so programmiert werden, dass sie diese Funktion nutzen, indem sie unregelmäßige Bereiche aktualisieren (um nicht-rechteckige untergeordnete Widgets zu erstellen) oder mit Farben zeichnen, deren Alpha-Komponente nicht vollständig ausgefüllt ist. Das folgende Diagramm zeigt, wie Attribute und Eigenschaften eines benutzerdefinierten Widgets fein abgestimmt werden können, um verschiedene Effekte zu erzielen.

In der obigen Abbildung wird ein halbtransparentes, rechteckiges untergeordnetes Widget mit einem entfernten Bereich erstellt und einem übergeordneten Widget (einem „ QLabel “, das eine Pixmap anzeigt) hinzugefügt. Anschließend werden verschiedene Eigenschaften und Widget-Attribute festgelegt, um unterschiedliche Effekte zu erzielen:
- Für das linke Widget sind keine zusätzlichen Eigenschaften oder Widget-Attribute festgelegt. Dieser Standardzustand eignet sich für die meisten benutzerdefinierten Widgets, die transparent oder unregelmäßig geformt sind oder deren gesamte Fläche nicht mit einem undurchsichtigen Pinsel ausgefüllt wird.
- Beim mittleren Widget ist die Eigenschaft „ autoFillBackground “ gesetzt. Diese Eigenschaft wird bei benutzerdefinierten Widgets verwendet, die darauf angewiesen sind, dass das Widget einen Standardhintergrund bereitstellt, und die nicht ihren gesamten Bereich mit einem undurchsichtigen Pinsel ausmalen.
- Für das rechte Widget ist das Widget-Attribut „ Qt::WA_OpaquePaintEvent “ gesetzt. Dies bedeutet, dass das Widget seinen gesamten Bereich mit undurchsichtigen Farben ausfüllt. Der Bereich des Widgets ist zunächst nicht initialisiert und wird im Diagramm durch ein rotes diagonales Gittermuster dargestellt, das durch den übermalten Bereich hindurchscheint.
Um benutzerdefinierte Widgets mit einfachen Hintergrundfarben schnell zu aktualisieren, wie z. B. Widgets für Echtzeit-Plots oder Diagramme, ist es besser, eine geeignete Hintergrundfarbe zu definieren (mithilfe von ` setBackgroundRole()` mit der Rolle „ QPalette::Window “), die Eigenschaft ` autoFillBackground ` festzulegen und nur die erforderlichen Zeichenfunktionen in der Methode ` paintEvent()` des Widgets zu implementieren.
Um benutzerdefinierte Widgets, die ihren gesamten Bereich ständig mit undurchsichtigen Inhalten übermalen – beispielsweise Video-Streaming-Widgets –, schnell zu aktualisieren, ist es besser, die Eigenschaft „ Qt::WA_OpaquePaintEvent “ des Widgets festzulegen, um unnötigen Overhead durch das erneute Zeichnen des Widget-Hintergrunds zu vermeiden.
Wenn bei einem Widget sowohl das Widget-Attribut „ Qt::WA_OpaquePaintEvent “ als auch die Eigenschaft „ autoFillBackground “ gesetzt sind, hat das Attribut „ Qt::WA_OpaquePaintEvent “ Vorrang. Je nach Ihren Anforderungen sollten Sie sich für eines der beiden entscheiden.
Der Inhalt von übergeordneten Widgets wird ebenfalls an Standard-Qt-Widgets weitergegeben. Dies kann zu unerwarteten Ergebnissen führen, wenn das übergeordnete Widget auf nicht standardmäßige Weise gestaltet ist, wie in der folgenden Abbildung dargestellt.

Der Spielraum für die Anpassung des Zeichenverhaltens von Standard-Qt-Widgets ohne Rückgriff auf Unterklassen ist etwas geringer als bei benutzerdefinierten Widgets. In der Regel lässt sich das gewünschte Erscheinungsbild eines Standard-Widgets durch Setzen seiner Eigenschaft „ autoFillBackground “ erzielen.
Erstellen von durchscheinenden Fenstern
Auf Fenstersystemen, die Compositing unterstützen, können Sie Fenster mit durchscheinenden Bereichen erstellen.
Um diese Funktion in einem Widget der obersten Ebene zu aktivieren, setzen Sie dessen Attribut „ Qt::WA_TranslucentBackground “ mit ` setAttribute()` und stellen Sie sicher, dass der Hintergrund in den Bereichen, die teilweise transparent sein sollen, mit nicht-opaken Farben gezeichnet wird.
Plattformhinweise:
- X11: Diese Funktion setzt die Verwendung eines X-Servers voraus, der ARGB-Visuals unterstützt, sowie eines Compositing-Fenstermanagers.
- Windows: Damit die Transluzenz funktioniert, muss für das Widget das Fensterflag „ Qt::FramelessWindowHint “ gesetzt sein.
- macOS: Damit die Transluzenz funktioniert, muss für das Widget das Fensterflag „ Qt::FramelessWindowHint “ gesetzt sein.
Native Widgets vs. Alien-Widgets
„Alien“-Widgets sind Widgets, die dem Fenstersystem unbekannt sind. Ihnen ist kein natives Fenster-Handle zugeordnet. Diese Funktion beschleunigt das Zeichnen und die Größenänderung von Widgets erheblich und beseitigt Flackern.
Sollten Sie das alte Verhalten mit nativen Fenstern benötigen, wählen Sie eine der folgenden Optionen:
- Verwenden Sie die „
QT_USE_NATIVE_WINDOWS=1“ in Ihrer Umgebung. - Setzen Sie das Attribut „ Qt::AA_NativeWindows “ in Ihrer Anwendung. Alle Widgets werden dann zu nativen Widgets.
- Legen Sie das Attribut „ Qt::WA_NativeWindow “ für Widgets fest: Das Widget selbst und alle seine übergeordneten Elemente werden zu nativen Widgets (es sei denn, „ Qt::WA_DontCreateNativeAncestors “ ist gesetzt).
- Rufen Sie „ QWidget::winId “ auf, um ein natives Fenster zu erzwingen (dies impliziert Punkt 3).
- Setzen Sie das Attribut „ Qt::WA_PaintOnScreen “, um ein natives Fenster zu erzwingen (dies impliziert Punkt 3).
Siehe auch „ QEvent“ , „ QPainter “, „ QGridLayout “ und „ QBoxLayout “.
Dokumentation zu Mitgliedstypen
enum QWidget::RenderFlag
flags QWidget::RenderFlags
Diese Enumeration beschreibt, wie das Widget beim Aufruf von ` QWidget::render()` dargestellt werden soll.
| Konstante | Wert | Beschreibung |
|---|---|---|
QWidget::DrawWindowBackground | 0x1 | Wenn Sie diese Option aktivieren, wird der Hintergrund des Widgets im Ziel gerendert, auch wenn „ autoFillBackground “ nicht festgelegt ist. Standardmäßig ist diese Option aktiviert. |
QWidget::DrawChildren | 0x2 | Wenn Sie diese Option aktivieren, werden die untergeordneten Elemente des Widgets rekursiv im Ziel gerendert. Standardmäßig ist diese Option aktiviert. |
QWidget::IgnoreMask | 0x4 | Wenn Sie diese Option aktivieren, wird die Funktion „ QWidget::mask()“ des Widgets beim Rendern in das Ziel ignoriert. Standardmäßig ist diese Option deaktiviert. |
Der Typ „RenderFlags“ ist ein „typedef“ für „QFlags<RenderFlag>“. Er speichert eine ODER-Kombination von „RenderFlag“-Werten.
Dokumentation zu den Eigenschaften
acceptDrops : bool
Diese Eigenschaft gibt an, ob Drop-Ereignisse für dieses Widget aktiviert sind
Wird diese Eigenschaft auf „true“ gesetzt, wird dem System mitgeteilt, dass dieses Widget möglicherweise Drop-Ereignisse akzeptieren kann.
Warnung: ÄndernSie diese Eigenschaft nicht in einem Drag-and-Drop-Ereignis-Handler.
Standardmäßig ist diese Eigenschaft auf „ false “ gesetzt.
Zugriffsfunktionen:
| bool | acceptDrops() const |
| void | setAcceptDrops(bool on) |
Siehe auch „Drag & Drop“.
accessibleDescription : QString
Diese Eigenschaft enthält die Beschreibung des Widgets, wie sie von assistiven Technologien angezeigt wird
Die barrierefreie Beschreibung eines Widgets sollte vermitteln, was das Widget tut. Während der „ accessibleName “ eine kurze und prägnante Zeichenfolge sein sollte (z. B. „Speichern“), sollte die Beschreibung mehr Kontext liefern, wie z. B. „Speichert das aktuelle Dokument“.
Diese Eigenschaft muss lokalisiert werden.
Standardmäßig enthält diese Eigenschaft eine leere Zeichenkette, und Qt greift auf den Tooltip zurück, um diese Informationen bereitzustellen.
Zugriffsfunktionen:
| QString | accessibleDescription() const |
| void | setAccessibleDescription(const QString &description) |
Siehe auch „ QWidget::accessibleName “ und „ QAccessibleInterface::text()“.
[since 6.9] accessibleIdentifier : QString
Diese Eigenschaft enthält die Kennung des Widgets, wie sie von assistiven Technologien erkannt wird
Wenn diese Eigenschaft gesetzt ist, kann die barrierefreie Kennung eines Widgets von assistiven Technologien verwendet werden, um ein bestimmtes Widget zu identifizieren, z. B. in automatisierten Tests.
Diese Enumeration wurde in Qt 6.9 eingeführt.
Zugriffsfunktionen:
| QString | accessibleIdentifier() const |
| void | setAccessibleIdentifier(const QString &identifier) |
accessibleName : QString
Diese Eigenschaft enthält den Namen des Widgets, wie er von assistiven Technologien angezeigt wird
Dies ist der primäre Name, unter dem assistive Technologien wie Bildschirmleseprogramme dieses Widget ansagen. Bei den meisten Widgets ist die Einstellung dieser Eigenschaft nicht erforderlich. Bei „ QPushButton “ wird beispielsweise der Text der Schaltfläche verwendet.
Es ist wichtig, diese Eigenschaft festzulegen, wenn das Widget keinen Text enthält. Beispielsweise muss bei einer Schaltfläche, die nur ein Symbol enthält, diese Eigenschaft festgelegt werden, damit sie mit Bildschirmleseprogrammen funktioniert. Der Name sollte kurz sein und den visuellen Informationen entsprechen, die das Widget vermittelt.
Diese Eigenschaft muss lokalisiert werden.
Standardmäßig enthält diese Eigenschaft eine leere Zeichenkette.
Zugriffsfunktionen:
| QString | accessibleName() const |
| void | setAccessibleName(const QString &name) |
Siehe auch „ QWidget::accessibleDescription “ und „ QAccessibleInterface::text()“.
autoFillBackground : bool
Diese Eigenschaft legt fest, ob der Hintergrund des Widgets automatisch gefüllt wird
Ist diese Eigenschaft aktiviert, sorgt sie dafür, dass Qt den Hintergrund des Widgets ausfüllt, bevor das „paint“-Ereignis ausgelöst wird. Die verwendete Farbe wird durch die Farbrolle „ QPalette::Window “ aus dem „ palette “ des Widgets definiert.
Zudem werden Fenster immer mit „ QPalette::Window “ gefüllt, es sei denn, die Attribute „WA_OpaquePaintEvent“ oder „WA_NoSystemBackground“ sind gesetzt.
Diese Eigenschaft kann nicht deaktiviert werden (d. h. auf „false“ gesetzt werden), wenn das übergeordnete Widget einen statischen Farbverlauf als Hintergrund hat.
Warnung: Verwenden Sie diese Eigenschaft in Verbindung mit Qt-Stylesheets mit Vorsicht. Wenn ein Widget über ein Stylesheet mit einem gültigen Hintergrund oder einem Rahmenbild verfügt, wird diese Eigenschaft automatisch deaktiviert.
Standardmäßig ist diese Eigenschaft auf „ false “ gesetzt.
Zugriffsfunktionen:
| bool | autoFillBackground() const |
| void | setAutoFillBackground(bool enabled) |
Siehe auch „ Qt::WA_OpaquePaintEvent “, „ Qt::WA_NoSystemBackground “ und „ Transparency and Double Buffering “.
baseSize : QSize
Diese Eigenschaft enthält die Basisgröße des Widgets
Die Basisgröße wird verwendet, um eine geeignete Widget-Größe zu berechnen, wenn das Widget „ sizeIncrement()“ definiert.
Standardmäßig enthält diese Eigenschaft bei einem neu erstellten Widget eine Größe mit der Breite und Höhe Null.
Zugriffsfunktionen:
| QSize | baseSize() const |
| void | setBaseSize(const QSize &) |
| void | setBaseSize(int basew, int baseh) |
Siehe auch ` setSizeIncrement()`.
[read-only] childrenRect : QRect
Diese Eigenschaft enthält das Begrenzungsrechteck der untergeordneten Elemente des Widgets
Ausgeblendete untergeordnete Elemente werden dabei nicht berücksichtigt.
Standardmäßig enthält diese Eigenschaft für ein Widget ohne untergeordnete Elemente ein Rechteck mit der Breite und Höhe Null, das am Ursprung liegt.
Zugriffsfunktionen:
| QRect | childrenRect() const |
Siehe auch „ childrenRegion()“ und „ geometry()“.
[read-only] childrenRegion : QRegion
Diese Eigenschaft enthält die Gesamtfläche, die von den untergeordneten Elementen des Widgets eingenommen wird
Ausgeblendete untergeordnete Elemente werden dabei nicht berücksichtigt.
Standardmäßig enthält diese Eigenschaft bei einem Widget ohne untergeordnete Elemente einen leeren Bereich.
Zugriffsfunktionen:
| QRegion | childrenRegion() const |
Siehe auch „ childrenRect()“, „ geometry()“ und „ mask()“.
contextMenuPolicy : Qt::ContextMenuPolicy
Wie das Widget ein Kontextmenü anzeigt
Der Standardwert dieser Eigenschaft ist „ Qt::DefaultContextMenu “, was bedeutet, dass der Handler „ contextMenuEvent()“ aufgerufen wird. Weitere Werte sind „ Qt::NoContextMenu “, „ Qt::PreventContextMenu “, „ Qt::ActionsContextMenu “ und „ Qt::CustomContextMenu “. Bei „ Qt::CustomContextMenu “ wird das Signal „ customContextMenuRequested()“ ausgesendet.
Zugriffsfunktionen:
| Qt::ContextMenuPolicy | contextMenuPolicy() const |
| void | setContextMenuPolicy(Qt::ContextMenuPolicy policy) |
Siehe auch contextMenuEvent(), customContextMenuRequested() und actions().
cursor : QCursor
Diese Eigenschaft legt die Cursorform für dieses Widget fest
Der Mauszeiger nimmt diese Form an, wenn er sich über diesem Widget befindet. Eine Auswahl nützlicher Formen finden Sie unter „ list of predefined cursor objects “.
Ein Editor-Widget könnte beispielsweise einen I-Balken-Cursor verwenden:
setCursor(Qt::IBeamCursor);Wenn kein Cursor festgelegt wurde oder nach einem Aufruf von `unsetCursor()`, wird der Cursor des übergeordneten Elements verwendet.
Standardmäßig enthält diese Eigenschaft einen Cursor mit der Form „ Qt::ArrowCursor “.
Einige zugrunde liegende Fensterimplementierungen setzen den Cursor zurück, wenn er ein Widget verlässt, selbst wenn die Maus ergriffen ist. Wenn Sie einen Cursor für alle Widgets festlegen möchten, auch wenn diese sich außerhalb des Fensters befinden, sollten Sie „ QGuiApplication::setOverrideCursor()“ in Betracht ziehen.
Zugriffsfunktionen:
| QCursor | cursor() const |
| void | setCursor(const QCursor &) |
| void | unsetCursor() |
Siehe auch ` QGuiApplication::setOverrideCursor()`.
enabled : bool
Diese Eigenschaft gibt an, ob das Widget aktiviert ist
Im Allgemeinen verarbeitet ein aktiviertes Widget Tastatur- und Mausereignisse; ein deaktiviertes Widget tut dies nicht. Eine Ausnahme bildet „ QAbstractButton “.
Manche Widgets werden anders dargestellt, wenn sie deaktiviert sind. Beispielsweise kann eine Schaltfläche ihre Beschriftung ausgegraut anzeigen. Wenn Ihr Widget erkennen muss, wann es aktiviert oder deaktiviert wird, können Sie die Methode ` changeEvent()` mit dem Typ ` QEvent::EnabledChange` verwenden.
Das Deaktivieren eines Widgets deaktiviert implizit alle seine untergeordneten Widgets. Das Aktivieren aktiviert entsprechend alle untergeordneten Widgets, sofern diese nicht explizit deaktiviert wurden. Es ist nicht möglich, ein untergeordnetes Widget, das kein Fenster ist, explizit zu aktivieren, solange sein übergeordnetes Widget deaktiviert bleibt.
Standardmäßig ist diese Eigenschaft auf „ true “ gesetzt.
Zugriffsfunktionen:
| bool | isEnabled() const |
| void | setEnabled(bool) |
Siehe auch „ isEnabledTo()“, „ QKeyEvent “, „ QMouseEvent “ und „ changeEvent()“.
[read-only] focus : bool
Diese Eigenschaft gibt an, ob dieses Widget (oder sein Fokus-Proxy) den Tastatureingabefokus hat
Standardmäßig ist diese Eigenschaft auf „ false “ gesetzt.
Hinweis: Das Abrufen des Werts dieser Eigenschaft für ein Widget entspricht im Grunde der Überprüfung, ob QApplication::focusWidget() auf das Widget verweist.
Zugriffsfunktionen:
| bool | hasFocus() const |
Siehe auch „ setFocus()“, „ clearFocus()“, „ setFocusPolicy()“ und „ QApplication::focusWidget()“.
focusPolicy : Qt::FocusPolicy
Diese Eigenschaft legt fest, wie das Widget den Tastaturfokus annimmt
Die Richtlinie lautet „ Qt::TabFocus “, wenn das Widget den Tastaturfokus per Tab-Taste annimmt, „ Qt::ClickFocus “, wenn das Widget den Fokus per Klick annimmt, „ Qt::StrongFocus “, wenn es beides annimmt, und „ Qt::NoFocus “ (Standard), wenn es den Fokus überhaupt nicht annimmt.
Sie müssen den Tastaturfokus für ein Widget aktivieren, wenn es Tastaturereignisse verarbeitet. Dies geschieht normalerweise im Konstruktor des Widgets. Der Konstruktor von „ QLineEdit “ ruft beispielsweise „setFocusPolicy(Qt::StrongFocus)“ auf.
Verfügt das Widget über einen Fokus-Proxy, wird die Fokusrichtlinie an diesen weitergegeben.
Zugriffsfunktionen:
| Qt::FocusPolicy | focusPolicy() const |
| void | setFocusPolicy(Qt::FocusPolicy policy) |
Siehe auch focusInEvent(), focusOutEvent(), keyPressEvent(), keyReleaseEvent() und enabled.
font : QFont
Diese Eigenschaft enthält die aktuell für das Widget festgelegte Schriftart
Diese Eigenschaft beschreibt die vom Widget angeforderte Schriftart. Die Schriftart wird vom Stil des Widgets beim Rendern von Standardkomponenten verwendet und dient dazu, sicherzustellen, dass benutzerdefinierte Widgets die Konsistenz mit dem Look-and-Feel der nativen Plattform wahren können. Es ist üblich, dass verschiedene Plattformen oder verschiedene Stile unterschiedliche Schriftarten für eine Anwendung definieren.
Wenn Sie einem Widget eine neue Schriftart zuweisen, werden die Eigenschaften dieser Schriftart mit der Standardschriftart des Widgets kombiniert, um die endgültige Schriftart des Widgets zu bilden. Mit dem Aufruf von ` fontInfo()` können Sie eine Kopie der endgültigen Schriftart des Widgets abrufen. Die endgültige Schriftart wird auch zur Initialisierung der Schriftart von ` QPainter` verwendet.
Die Standardeinstellung hängt von der Systemumgebung ab. ` QApplication ` verwaltet eine System-/Themen-Schriftart, die als Standard für alle Widgets dient. Für bestimmte Widget-Typen kann es zudem spezielle Standardschriftarten geben. Du kannst Standardschriftarten für Widgets auch selbst definieren, indem du eine benutzerdefinierte Schriftart und den Namen eines Widgets an ` QApplication::setFont()` übergibst. Schließlich wird die Schriftart mit der Qt-Schriftartendatenbank abgeglichen, um die beste Übereinstimmung zu finden.
QWidget Explizite Schriftarteneigenschaften werden vom übergeordneten Element an untergeordnete Elemente weitergegeben. Wenn Sie eine bestimmte Eigenschaft einer Schriftart ändern und diese Schriftart einem Widget zuweisen, wird diese Eigenschaft an alle untergeordneten Elemente des Widgets weitergegeben und überschreibt dabei alle Systemstandardwerte für diese Eigenschaft. Beachten Sie, dass Schriftarten standardmäßig nicht an Fenster weitergegeben werden (siehe isWindow()), es sei denn, das Attribut Qt::WA_WindowPropagation ist aktiviert.
QWidgetDie Weitergabe von Schriftarten verläuft ähnlich wie die Weitergabe von Paletten.
Der aktuelle Stil, der zum Rendern des Inhalts aller Standard-Qt-Widgets verwendet wird, kann wahlweise die Schriftart des Widgets verwenden oder diese in manchen Fällen (teilweise oder vollständig) ignorieren. Insbesondere wenden bestimmte Stile wie der GTK-Stil, der Mac-Stil und der Windows-Vista-Stil spezielle Anpassungen an der Widget-Schriftart an, um sie an das native Look-and-Feel der Plattform anzupassen. Aus diesem Grund ist es nicht garantiert, dass die Zuweisung von Eigenschaften zur Schriftart eines Widgets das Erscheinungsbild des Widgets verändert. Stattdessen können Sie ein StyleSheet anwenden.
Hinweis: Wenn Qt-Style-Sheets auf demselben Widget wie `setFont()` verwendet werden, haben die Style-Sheets bei widersprüchlichen Einstellungen Vorrang.
Zugriffsfunktionen:
| const QFont & | font() const |
| void | setFont(const QFont &) |
Siehe auch ` fontInfo()` und ` fontMetrics()`.
[read-only] frameGeometry : QRect
Geometrie des Widgets relativ zu seinem übergeordneten Element, einschließlich etwaiger Fensterrahmen
Einen Überblick über Geometrieprobleme bei Fenstern finden Sie in der Dokumentation zur Fenstergeometrie.
Standardmäßig enthält diese Eigenschaft einen Wert, der von der Plattform und der Bildschirmgeometrie des Benutzers abhängt.
Zugriffsfunktionen:
| QRect | frameGeometry() const |
Siehe auch „ geometry()“, „ x()“, „ y()“ und „ pos()“.
[read-only] frameSize : QSize
Diese Eigenschaft gibt die Größe des Widgets einschließlich des Fensterrahmens an
Standardmäßig enthält diese Eigenschaft einen Wert, der von der Plattform und der Bildschirmgeometrie des Benutzers abhängt.
Zugriffsfunktionen:
| QSize | frameSize() const |
[read-only] fullScreen : bool
Diese Eigenschaft gilt unabhängig davon, ob das Widget im Vollbildmodus angezeigt wird
Ein Widget im Vollbildmodus nimmt den gesamten Bildschirmbereich ein und zeigt keine Fensterelemente wie beispielsweise eine Titelleiste an.
Standardmäßig ist diese Eigenschaft auf „ false “ gesetzt.
Zugriffsfunktionen:
| bool | isFullScreen() const |
Siehe auch „ windowState()“, „ minimized “ und „ maximized “.
geometry : QRect
Diese Eigenschaft enthält die Geometrie des Widgets relativ zu seinem übergeordneten Element und ohne den Fensterrahmen.
Ist das Widget ein Widget der obersten Ebene (ein Fenster), wird seine Geometrie in globalen Bildschirmkoordinaten angegeben.
Bei einer Änderung der Geometrie erhält das Widget, sofern es sichtbar ist, sofort ein Verschiebungsereignis (moveEvent()) und/oder ein Größenänderungsereignis (resizeEvent()). Ist das Widget derzeit nicht sichtbar, erhält es garantiert die entsprechenden Ereignisse, bevor es angezeigt wird.
Die Größenkomponente wird angepasst, wenn sie außerhalb des durch minimumSize() und maximumSize() definierten Bereichs liegt.
Warnung: Der Aufruf von `setGeometry()` innerhalb von ` resizeEvent()` oder ` moveEvent()` kann zu einer unendlichen Rekursion führen.
Einen Überblick über Geometrieprobleme bei Fenstern finden Sie in der Dokumentation zur Fenstergeometrie.
Standardmäßig enthält diese Eigenschaft einen Wert, der von der Plattform und der Bildschirmgeometrie des Benutzers abhängt.
Zugriffsfunktionen:
| const QRect & | geometry() const |
| void | setGeometry(int x, int y, int w, int h) |
| void | setGeometry(const QRect &) |
Siehe auch „ frameGeometry()“, „ rect()“, „ move()“, „ resize()“, „ moveEvent()“, „ resizeEvent()“, „ minimumSize()“ und „ maximumSize()“.
[read-only] height : int
Diese Eigenschaft gibt die Höhe des Widgets ohne den Fensterrahmen an
Einen Überblick über geometrische Aspekte von Fenstern finden Sie in der Dokumentation zur Fenstergeometrie.
Standardmäßig enthält diese Eigenschaft einen Wert, der von der Plattform des Benutzers und von ` screen geometry` abhängt.
Zugriffsfunktionen:
| int | height() const |
Siehe auch „ geometry “, „ width “ und „ size “.
inputMethodHints : Qt::InputMethodHints
Welche eingabemethodenspezifischen Hinweise das Widget enthält.
Dies ist nur für Eingabe-Widgets relevant. Die Eingabemethode nutzt diese Informationen, um Hinweise darüber abzurufen, wie sie funktionieren soll. Ist beispielsweise das Flag „ Qt::ImhFormattedNumbersOnly “ gesetzt, kann die Eingabemethode ihre visuellen Komponenten so anpassen, dass deutlich wird, dass nur Zahlen eingegeben werden können.
Warnung: Einige Widgets benötigen bestimmte Flags, um wie vorgesehen zu funktionieren. Um ein Flag zu setzen, verwenden Sie „ w->setInputMethodHints(w->inputMethodHints()|f) “ anstelle von „ w->setInputMethodHints(f) “.
Hinweis: Die Flags dienen lediglich als Hinweise, sodass es der jeweiligen Implementierung der Eingabemethode freisteht, sie zu ignorieren. Wenn Sie sicherstellen möchten, dass bestimmte Zeichentypen eingegeben werden, sollten Sie zusätzlich ein „ QValidator “ für das Widget setzen.
Der Standardwert ist ` Qt::ImhNone`.
Zugriffsfunktionen:
| Qt::InputMethodHints | inputMethodHints() const |
| void | setInputMethodHints(Qt::InputMethodHints hints) |
Siehe auch ` inputMethodQuery()`.
[read-only] isActiveWindow : bool
Diese Eigenschaft gibt an, ob das Fenster dieses Widgets das aktive Fenster ist
Das aktive Fenster ist das Fenster, das das Widget enthält, auf dem der Tastaturfokus liegt (das Fenster kann auch dann noch den Fokus haben, wenn es keine Widgets enthält oder keines seiner Widgets den Tastaturfokus annehmen kann).
Wenn Popup-Fenster sichtbar sind, ist diese Eigenschaft sowohl für das aktive Fenster als auch für das Popup auf „ true “ gesetzt.
Standardmäßig ist diese Eigenschaft auf „ false “ gesetzt.
Zugriffsfunktionen:
| bool | isActiveWindow() const |
Siehe auch „ activateWindow()“ und „ QApplication::activeWindow()“.
layoutDirection : Qt::LayoutDirection
Diese Eigenschaft enthält die Layoutrichtung für dieses Widget.
Hinweis: Seit Qt 4.7 hatdiese Methode keinen Einfluss mehr auf die Textausrichtungsrichtung.
Standardmäßig ist diese Eigenschaft auf „ Qt::LeftToRight “ gesetzt.
Wenn die Layout-Richtung für ein Widget festgelegt wird, wird sie an die untergeordneten Widgets des Widgets weitergegeben, jedoch nicht an untergeordnete Widgets, die selbst Fenster sind, und nicht an untergeordnete Widgets, für die setLayoutDirection() explizit aufgerufen wurde. Außerdem erben untergeordnete Widgets, die hinzugefügt wurden, nachdem `setLayoutDirection()` für das übergeordnete Widget aufgerufen wurde, nicht die Layout-Richtung des übergeordneten Widgets.
Zugriffsfunktionen:
| Qt::LayoutDirection | layoutDirection() const |
| void | setLayoutDirection(Qt::LayoutDirection direction) |
| void | unsetLayoutDirection() |
Siehe auch ` QApplication::layoutDirection`.
locale : QLocale
Diese Eigenschaft enthält die Locale des Widgets
Solange keine spezielle Locale festgelegt wurde, ist dies entweder die Locale des übergeordneten Elements oder (wenn es sich bei diesem Widget um ein Widget der obersten Ebene handelt) die Standard-Locale.
Wenn das Widget Datumsangaben oder Zahlen anzeigt, sollten diese gemäß der Ländereinstellung des Widgets formatiert werden.
Zugriffsfunktionen:
| QLocale | locale() const |
| void | setLocale(const QLocale &locale) |
| void | unsetLocale() |
Siehe auch QLocale und QLocale::setDefault().
[read-only] maximized : bool
Diese Eigenschaft gilt unabhängig davon, ob dieses Widget maximiert ist
Diese Eigenschaft ist nur für Fenster relevant.
Hinweis: Aufgrund von Einschränkungen bei einigen Fenstersystemen liefert diese Eigenschaft nicht immer die erwarteten Ergebnisse (z. B. wenn der Benutzer unter X11 das Fenster über den Fenstermanager maximiert, kann Qt dies nicht von einer anderen Größenänderung unterscheiden). Es ist zu erwarten, dass sich dies mit der Weiterentwicklung der Fenstermanager-Protokolle verbessert.
Standardmäßig ist diese Eigenschaft auf „ false “ gesetzt.
Zugriffsfunktionen:
| bool | isMaximized() const |
Siehe auch windowState(), showMaximized(), visible, show(), hide(), showNormal() und minimized.
maximumHeight : int
Diese Eigenschaft enthält die maximale Höhe des Widgets in Pixeln
Diese Eigenschaft entspricht der Höhe, die durch die Eigenschaft „ maximumSize “ festgelegt wird.
Standardmäßig enthält diese Eigenschaft den Wert 16777215.
Hinweis: Die Definition des Makros „ QWIDGETSIZE_MAX “ begrenzt die maximale Größe von Widgets.
Zugriffsfunktionen:
| int | maximumHeight() const |
| void | setMaximumHeight(int maxh) |
Siehe auch „ maximumSize “ und „ maximumWidth “.
maximumSize : QSize
Diese Eigenschaft gibt die maximale Größe des Widgets in Pixeln an
Das Widget kann nicht auf eine Größe vergrößert werden, die die maximale Widgetgröße überschreitet.
Standardmäßig enthält diese Eigenschaft eine Größe, bei der sowohl die Breite als auch die Höhe den Wert 16777215 haben.
Hinweis: Die Definition des Makros „ QWIDGETSIZE_MAX “ begrenzt die maximale Größe von Widgets.
Zugriffsfunktionen:
| QSize | maximumSize() const |
| void | setMaximumSize(const QSize &) |
| void | setMaximumSize(int maxw, int maxh) |
Siehe auch „ maximumWidth“ , „ maximumHeight “, „ minimumSize “ und „ sizeIncrement “.
maximumWidth : int
Diese Eigenschaft enthält die maximale Breite des Widgets in Pixeln
Diese Eigenschaft entspricht der Breite, die durch die Eigenschaft „ maximumSize “ festgelegt wird.
Standardmäßig enthält diese Eigenschaft den Wert 16777215.
Hinweis: Die Definition des Makros „ QWIDGETSIZE_MAX “ begrenzt die maximale Größe von Widgets.
Zugriffsfunktionen:
| int | maximumWidth() const |
| void | setMaximumWidth(int maxw) |
Siehe auch „ maximumSize “ und „ maximumHeight “.
[read-only] minimized : bool
Diese Eigenschaft gilt unabhängig davon, ob dieses Widget minimiert (als Symbol dargestellt) ist.
Diese Eigenschaft ist nur für Fenster relevant.
Standardmäßig ist diese Eigenschaft auf „ false “ gesetzt.
Zugriffsfunktionen:
| bool | isMinimized() const |
Siehe auch „ showMinimized()“, „ visible “, „ show()“, „ hide()“, „ showNormal()“ und „ maximized “.
minimumHeight : int
Diese Eigenschaft enthält die Mindesthöhe des Widgets in Pixeln
Diese Eigenschaft entspricht der Höhe, die durch die Eigenschaft „ minimumSize “ festgelegt wird.
Standardmäßig hat diese Eigenschaft den Wert 0.
Zugriffsfunktionen:
| int | minimumHeight() const |
| void | setMinimumHeight(int minh) |
Siehe auch „ minimumSize “ und „ minimumWidth “.
minimumSize : QSize
Diese Eigenschaft legt die Mindestgröße des Widgets fest
Das Widget kann nicht auf eine Größe verkleinert werden, die kleiner ist als die Mindestgröße des Widgets. Die Größe des Widgets wird auf die Mindestgröße festgelegt, wenn die aktuelle Größe kleiner ist.
Die durch diese Funktion festgelegte Mindestgröße überschreibt die durch „ QLayout “ definierte Mindestgröße. Um die Mindestgröße aufzuheben, verwenden Sie den Wert „ QSize(0, 0) “.
Standardmäßig enthält diese Eigenschaft eine Größe mit der Breite und Höhe Null.
Zugriffsfunktionen:
| QSize | minimumSize() const |
| void | setMinimumSize(const QSize &) |
| void | setMinimumSize(int minw, int minh) |
Siehe auch „ minimumWidth“ , „ minimumHeight “, „ maximumSize “ und „ sizeIncrement “.
[read-only] minimumSizeHint : QSize
Diese Eigenschaft enthält die empfohlene Mindestgröße für das Widget
Ist der Wert dieser Eigenschaft eine ungültige Größe, wird keine Mindestgröße empfohlen.
Die Standardimplementierung von `minimumSizeHint()` gibt eine ungültige Größe zurück, wenn für dieses Widget kein Layout vorhanden ist, und andernfalls die Mindestgröße des Layouts. Die meisten integrierten Widgets implementieren `minimumSizeHint()` neu.
QLayout Die Größe eines Widgets wird niemals auf eine Größe unterhalb des Mindestgrößenhinweises angepasst, es sei denn, ` minimumSize()` ist gesetzt oder die Größenrichtlinie ist auf `QSizePolicy::Ignore` festgelegt. Ist ` minimumSize()` gesetzt, wird der Mindestgrößenhinweis ignoriert.
Zugriffsfunktionen:
| virtual QSize | minimumSizeHint() const |
Siehe auch ` QSize::isValid()`, ` resize()`, ` setMinimumSize()` und ` sizePolicy()`.
minimumWidth : int
Diese Eigenschaft gibt die Mindestbreite des Widgets in Pixeln an
Diese Eigenschaft entspricht der Breite, die durch die Eigenschaft „ minimumSize “ festgelegt wird.
Standardmäßig hat diese Eigenschaft den Wert 0.
Zugriffsfunktionen:
| int | minimumWidth() const |
| void | setMinimumWidth(int minw) |
Siehe auch „ minimumSize “ und „ minimumHeight “.
[read-only] modal : bool
Diese Eigenschaft gibt an, ob es sich bei dem Widget um ein modales Widget handelt
Diese Eigenschaft ist nur für Fenster von Bedeutung. Ein modales Widget verhindert, dass Widgets in allen anderen Fenstern Eingaben erhalten.
Standardmäßig ist diese Eigenschaft auf „ false “ gesetzt.
Zugriffsfunktionen:
| bool | isModal() const |
Siehe auch „ isWindow()“, „ windowModality “ und „ QDialog “.
mouseTracking : bool
Diese Eigenschaft gibt an, ob die Mausverfolgung für das Widget aktiviert ist
Ist die Mausverfolgung deaktiviert (Standardeinstellung), empfängt das Widget Mausbewegungsereignisse nur dann, wenn während der Mausbewegung mindestens eine Maustaste gedrückt ist.
Ist die Mausverfolgung aktiviert, erhält das Widget Mausbewegungsereignisse auch dann, wenn keine Tasten gedrückt sind.
Zugriffsfunktionen:
| bool | hasMouseTracking() const |
| void | setMouseTracking(bool enable) |
Siehe auch ` mouseMoveEvent()`.
[read-only] normalGeometry : QRect
Diese Eigenschaft enthält die Geometrie des Widgets, wie sie angezeigt wird, wenn es als normales (nicht maximiertes oder im Vollbildmodus angezeigtes) Top-Level-Widget dargestellt wird.
Befindet sich das Widget bereits in diesem Zustand, spiegelt die normale Geometrie die aktuelle „ geometry()“-Einstellung des Widgets wider.
Bei untergeordneten Widgets enthält diese Eigenschaft immer ein leeres Rechteck.
Standardmäßig enthält diese Eigenschaft ein leeres Rechteck.
Zugriffsfunktionen:
| QRect | normalGeometry() const |
Siehe auch „ QWidget::windowState()“ und „ QWidget::geometry “.
palette : QPalette
Diese Eigenschaft enthält die Palette des Widgets
Diese Eigenschaft beschreibt die Palette des Widgets. Die Palette wird vom Stil des Widgets beim Rendern von Standardkomponenten verwendet und dient dazu, sicherzustellen, dass benutzerdefinierte Widgets mit dem Look-and-Feel der nativen Plattform konsistent bleiben. Es ist üblich, dass verschiedene Plattformen oder verschiedene Stile unterschiedliche Paletten haben.
Wenn Sie einem Widget eine neue Palette zuweisen, werden die Farbrollen aus dieser Palette mit der Standardpalette des Widgets kombiniert, um die endgültige Palette des Widgets zu bilden. Der Paletteneintrag für die Hintergrundrolle des Widgets wird verwendet, um den Hintergrund des Widgets zu füllen (siehe QWidget::autoFillBackground), und die Vordergrundrolle initialisiert den Stift von QPainter.
Die Standardeinstellung hängt von der Systemumgebung ab. QApplication verwaltet eine System-/Themenpalette, die als Standard für alle Widgets dient. Für bestimmte Widget-Typen kann es zudem spezielle Standardpaletten geben (z. B. haben unter Windows Vista alle Klassen, die von QMenuBar abgeleitet sind, eine spezielle Standardpalette). Sie können Standardpaletten für Widgets auch selbst definieren, indem Sie eine benutzerdefinierte Palette und den Namen eines Widgets an ` QApplication::setPalette()` übergeben. Schließlich hat der Stil immer die Möglichkeit, die Palette bei der Zuweisung anzupassen (siehe ` QStyle::polish()`).
QWidget Explizite Palettenrollen werden vom übergeordneten Element an untergeordnete Elemente weitergegeben. Wenn Sie einer bestimmten Rolle in einer Palette einen Pinsel oder eine Farbe zuweisen und diese Palette einem Widget zuweisen, wird diese Rolle an alle untergeordneten Elemente des Widgets weitergegeben und überschreibt dabei alle Systemstandardwerte für diese Rolle. Beachten Sie, dass Paletten standardmäßig nicht auf Fenster übertragen werden (siehe isWindow()), es sei denn, das Attribut „ Qt::WA_WindowPropagation “ ist aktiviert.
QWidgetDie Palettenweitergabe von xml-ph-0001@deepl.internal ähnelt der Schriftartweitergabe.
Der aktuelle Stil, der zum Rendern des Inhalts aller Standard-Qt-Widgets verwendet wird, kann Farben und Pinsel frei aus der Widget-Palette auswählen oder in einigen Fällen die Palette (teilweise oder vollständig) ignorieren. Insbesondere bestimmte Stile wie der GTK-Stil, der Mac-Stil und der Windows-Vista-Stil sind beim Rendern des Inhalts von Widgets auf APIs von Drittanbietern angewiesen, und diese Stile halten sich in der Regel nicht an die Palette. Aus diesem Grund ist es nicht garantiert, dass die Zuweisung von Rollen zur Palette eines Widgets das Erscheinungsbild des Widgets verändert. Stattdessen können Sie ein StyleSheet anwenden.
Warnung: Verwenden Sie diese Funktion nicht in Verbindung mit Qt-Stylesheets. Bei der Verwendung von Stylesheets kann die Palette eines Widgets mithilfe der Eigenschaften „color“, „background-color“, „selection-color“, „selection-background-color“ und „alternate-background-color“ angepasst werden.
Zugriffsfunktionen:
| const QPalette & | palette() const |
| void | setPalette(const QPalette &) |
Siehe auch QGuiApplication::palette(), QWidget::font() und Qt-Stylesheets.
pos : QPoint
Diese Eigenschaft gibt die Position des Widgets innerhalb seines übergeordneten Widgets an
Ist das Widget ein Fenster, entspricht die Position der Position des Widgets auf dem Desktop, einschließlich seines Rahmens.
Bei einer Positionsänderung erhält das Widget, sofern es sichtbar ist, sofort ein Move-Ereignis (moveEvent()). Ist das Widget derzeit nicht sichtbar, erhält es garantiert ein Ereignis, bevor es angezeigt wird.
Standardmäßig enthält diese Eigenschaft eine Position, die sich auf den Ursprung bezieht.
Warnung: Der Aufruf von `move()` oder ` setGeometry()` innerhalb von ` moveEvent()` kann zu einer unendlichen Rekursion führen.
Einen Überblick über Geometrieprobleme bei Fenstern finden Sie in der Dokumentation zur Fenstergeometrie.
Hinweis: Nicht alle Fenstersysteme unterstützen das Festlegen oder Abfragen von Positionen von Fenstern der obersten Ebene. Auf einem solchen System hat das programmgesteuerte Verschieben von Fenstern möglicherweise keine Wirkung, und für die aktuellen Positionen werden möglicherweise künstliche Werte zurückgegeben, wie z. B. ` QPoint(0, 0)`.
Zugriffsfunktionen:
| QPoint | pos() const |
| void | move(int x, int y) |
| void | move(const QPoint &) |
Siehe auch „ frameGeometry“ , „ size “, „ x()“ und „ y()“.
[read-only] rect : QRect
Diese Eigenschaft enthält die interne Geometrie des Widgets ohne den Fensterrahmen
Die Eigenschaft „rect“ entspricht „ QRect “ (0, 0, width(), height()).
Einen Überblick über Geometrieprobleme bei Fenstern finden Sie in der Dokumentation zur Fenstergeometrie.
Standardmäßig enthält diese Eigenschaft einen Wert, der von der Plattform und der Bildschirmgeometrie des Benutzers abhängt.
Zugriffsfunktionen:
| QRect | rect() const |
Siehe auch size.
size : QSize
Diese Eigenschaft gibt die Größe des Widgets ohne den Fensterrahmen an
Ist das Widget während der Größenänderung sichtbar, erhält es sofort ein Resize-Ereignis (resizeEvent()). Ist das Widget derzeit nicht sichtbar, erhält es garantiert ein Ereignis, bevor es angezeigt wird.
Die Größe wird angepasst, wenn sie außerhalb des durch minimumSize() und maximumSize() definierten Bereichs liegt.
Standardmäßig enthält diese Eigenschaft einen Wert, der von der Plattform und der Bildschirmgeometrie des Benutzers abhängt.
Warnung: Der Aufruf von resize() oder setGeometry() innerhalb von resizeEvent() kann zu einer unendlichen Rekursion führen.
Hinweis: Wenn die Größe auf ` QSize(0, 0) `gesetzt wird , wird das Widget nicht auf dem Bildschirm angezeigt. Dies gilt auch für Fenster.
Zugriffsfunktionen:
| QSize | size() const |
| void | resize(int w, int h) |
| void | resize(const QSize &) |
Siehe auch „ pos“ , „ geometry “, „ minimumSize “, „ maximumSize “, „ resizeEvent()“ und „ adjustSize()“.
[read-only] sizeHint : QSize
Diese Eigenschaft enthält die empfohlene Größe für das Widget
Ist der Wert dieser Eigenschaft eine ungültige Größe, wird keine Größe empfohlen.
Die Standardimplementierung von `sizeHint()` gibt eine ungültige Größe zurück, wenn für dieses Widget kein Layout vorhanden ist, andernfalls die bevorzugte Größe des Layouts.
Zugriffsfunktionen:
| virtual QSize | sizeHint() const |
Siehe auch „ QSize::isValid()“, „ minimumSizeHint()“, „ sizePolicy()“, „ setMinimumSize()“ und „ updateGeometry()“.
sizeIncrement : QSize
Diese Eigenschaft enthält den Schrittwert für die Größenänderung des Widgets
Wenn der Benutzer die Größe des Fensters ändert, wird die Größe in Schritten von `sizeIncrement()`.width()` Pixeln in horizontaler Richtung und `sizeIncrement.height()` Pixeln in vertikaler Richtung angepasst, wobei ` baseSize()` als Basis dient. Bevorzugte Widget-Größen gelten für nicht-negative Ganzzahlen `i` und `j`:
width = baseSize().width() + i * sizeIncrement().width();
height = baseSize().height() + j * sizeIncrement().height();Beachten Sie, dass Sie zwar die Schrittweite für alle Widgets festlegen können, diese sich jedoch nur auf Fenster auswirkt.
Standardmäßig enthält diese Eigenschaft eine Größe mit der Breite und Höhe Null.
Warnung: Die Schrittweite hat unter Windows keine Auswirkung und wird vom Fenstermanager unter X11 möglicherweise ignoriert.
Zugriffsfunktionen:
| QSize | sizeIncrement() const |
| void | setSizeIncrement(const QSize &) |
| void | setSizeIncrement(int w, int h) |
Siehe auch size, minimumSize und maximumSize.
sizePolicy : QSizePolicy
Diese Eigenschaft legt das Standard-Layoutverhalten des Widgets fest
Wenn ein „ QLayout “ vorhanden ist, das die untergeordneten Elemente dieses Widgets verwaltet, wird die von diesem Layout festgelegte Größenrichtlinie verwendet. Ist kein solches „ QLayout “ vorhanden, wird das Ergebnis dieser Funktion verwendet.
Die Standardrichtlinie ist „Preferred/Preferred“, was bedeutet, dass die Größe des Widgets frei angepasst werden kann, es jedoch vorzugsweise die Größe annimmt, die von ` sizeHint()` zurückgegeben wird. Button-ähnliche Widgets legen die Größenrichtlinie so fest, dass sie sich horizontal ausdehnen können, vertikal jedoch feststehen. Das Gleiche gilt für LineEdit-Steuerelemente (wie z. B. ` QLineEdit`, ` QSpinBox ` oder ein bearbeitbares ` QComboBox`) und andere horizontal ausgerichtete Widgets (wie z. B. ` QProgressBar`). ` QToolButton` sind normalerweise quadratisch und lassen daher eine Vergrößerung in beide Richtungen zu. Widgets, die verschiedene Ausrichtungen unterstützen (wie z. B. QSlider, QScrollBar oder QHeader), legen die Skalierung nur in der jeweiligen Richtung fest. Widgets, die Bildlaufleisten bereitstellen können (in der Regel Unterklassen von QScrollArea), geben in der Regel an, dass sie zusätzlichen Platz nutzen können und dass sie auch mit weniger als sizeHint() auskommen.
Zugriffsfunktionen:
| QSizePolicy | sizePolicy() const |
| void | setSizePolicy(QSizePolicy) |
| void | setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical) |
Siehe auch „ sizeHint()“, „ QLayout “, „ QSizePolicy “ und „ updateGeometry()“.
statusTip : QString
Diese Eigenschaft enthält den Status-Hinweis des Widgets
Standardmäßig enthält diese Eigenschaft eine leere Zeichenfolge.
Zugriffsfunktionen:
| QString | statusTip() const |
| void | setStatusTip(const QString &) |
Siehe auch toolTip und whatsThis.
styleSheet : QString
Diese Eigenschaft enthält das Stylesheet des Widgets
Das Stylesheet enthält eine textuelle Beschreibung der Anpassungen am Stil des Widgets, wie im Dokument „Qt Style Sheets“ beschrieben.
Durch das Festlegen eines Stylesheets für ein Widget verwenden das Widget und seine untergeordneten Elemente einen Stylesheet-Stil, der den aktuellen „ style “ umschließt. Informationen dazu, wann Stylesheets verwendet werden sollten, finden Sie unter „Styling-Ansätze für Qt Widgets “.
Zugriffsfunktionen:
| QString | styleSheet() const |
| void | setStyleSheet(const QString &styleSheet) |
Siehe auch „ setStyle()“, „ QApplication::styleSheet “, „Qt-Stylesheets“ und „Gestaltungsansätze für Qt Widgets “.
tabletTracking : bool
Diese Eigenschaft gibt an, ob die Tablet-Verfolgung für das Widget aktiviert ist
Ist die Tablet-Verfolgung deaktiviert (Standardeinstellung), empfängt das Widget nur dann Tablet-Bewegungsereignisse, wenn der Stift das Tablet berührt oder mindestens eine Stift-Taste gedrückt wird, während der Stift bewegt wird.
Ist die Tablet-Verfolgung aktiviert, empfängt das Widget Tablet-Bewegungsereignisse auch dann, wenn sich der Stift in der Nähe befindet, ohne den Bildschirm zu berühren. Dies ist nützlich, um die Position sowie zusätzliche Eigenschaften wie Drehung und Neigung zu überwachen und Feedback in der Benutzeroberfläche zu geben.
Zugriffsfunktionen:
| bool | hasTabletTracking() const |
| void | setTabletTracking(bool enable) |
Siehe auch ` tabletEvent()`.
toolTip : QString
Diese Eigenschaft enthält den Tooltip des Widgets
Beachten Sie, dass Tooltips standardmäßig nur für Widgets angezeigt werden, die Kinder des aktiven Fensters sind. Sie können dieses Verhalten ändern, indem Sie das Attribut „ Qt::WA_AlwaysShowToolTips “ am Fenster festlegen, nicht am Widget mit dem Tooltip.
Wenn Sie das Verhalten eines Tooltips steuern möchten, können Sie die Funktion ` event()` abfangen und das Ereignis ` QEvent::ToolTip ` abfangen (z. B. wenn Sie den Bereich anpassen möchten, für den der Tooltip angezeigt werden soll).
Standardmäßig enthält diese Eigenschaft eine leere Zeichenfolge.
Zugriffsfunktionen:
| QString | toolTip() const |
| void | setToolTip(const QString &) |
Siehe auch „ QToolTip “, „ statusTip “ und „ whatsThis “.
toolTipDuration : int
Diese Eigenschaft legt die Anzeigedauer des Tooltips des Widgets fest
Gibt an, wie lange der Tooltip angezeigt wird (in Millisekunden). Ist der Wert -1 (Standard), wird die Dauer abhängig von der Länge des Tooltips berechnet.
Zugriffsfunktionen:
| int | toolTipDuration() const |
| void | setToolTipDuration(int msec) |
Siehe auch „ toolTip “.
updatesEnabled : bool
Diese Eigenschaft gilt unabhängig davon, ob Aktualisierungen aktiviert sind
Ein Widget, bei dem Aktualisierungen aktiviert sind, empfängt Zeichenereignisse und verfügt über einen Systemhintergrund; ein deaktiviertes Widget tut dies nicht. Dies bedeutet auch, dass der Aufruf von ` update()` und ` repaint()` keine Wirkung hat, wenn Aktualisierungen deaktiviert sind.
Standardmäßig ist diese Eigenschaft auf „ true “ gesetzt.
`setUpdatesEnabled()` wird normalerweise verwendet, um Aktualisierungen für einen kurzen Zeitraum zu deaktivieren, beispielsweise um ein Flackern des Bildschirms bei umfangreichen Änderungen zu vermeiden. In Qt verursachen Widgets normalerweise kein Bildschirmflackern, aber unter X11 löscht der Server möglicherweise Bereiche auf dem Bildschirm, wenn Widgets ausgeblendet werden, bevor sie durch andere Widgets ersetzt werden können. Das Deaktivieren von Aktualisierungen behebt dieses Problem.
Beispiel:
setUpdatesEnabled(false);
bigVisualChanges();
setUpdatesEnabled(true);Das Deaktivieren eines Widgets deaktiviert implizit alle seine untergeordneten Widgets. Das Aktivieren eines Widgets aktiviert alle untergeordneten Widgets mit Ausnahme von Widgets der obersten Ebene oder solchen, die explizit deaktiviert wurden. Das erneute Aktivieren von Aktualisierungen ruft implizit ` update()` für das Widget auf.
Zugriffsfunktionen:
| bool | updatesEnabled() const |
| void | setUpdatesEnabled(bool enable) |
Siehe auch ` paintEvent()`.
visible : bool
Diese Eigenschaft gibt an, ob das Widget sichtbar ist
Der Aufruf von `setVisible(true)` oder ` show()` setzt das Widget in den sichtbaren Status, sofern alle übergeordneten Widgets bis hin zum Fenster sichtbar sind. Ist ein übergeordnetes Widget nicht sichtbar, wird das Widget erst sichtbar, wenn alle seine übergeordneten Widgets angezeigt werden. Wenn sich seine Größe oder Position geändert hat, garantiert Qt, dass ein Widget unmittelbar vor seiner Anzeige „move“- und „resize“-Ereignisse erhält. Wurde die Größe des Widgets noch nicht angepasst, passt Qt die Größe des Widgets mithilfe von ` adjustSize()` auf einen sinnvollen Standardwert an.
Durch den Aufruf von `setVisible(false)` oder ` hide()` wird ein Widget explizit ausgeblendet. Ein explizit ausgeblendetes Widget wird niemals sichtbar, selbst wenn alle seine übergeordneten Widgets sichtbar werden, es sei denn, Sie blenden es ein.
Ein Widget empfängt „show“- und „hide“-Ereignisse, wenn sich sein Sichtbarkeitsstatus ändert. Zwischen einem „hide“- und einem „show“-Ereignis besteht keine Notwendigkeit, CPU-Zyklen für die Vorbereitung oder Anzeige von Informationen für den Benutzer zu verschwenden. Eine Videoanwendung könnte beispielsweise einfach die Erzeugung neuer Frames einstellen.
Ein Widget, das zufällig von anderen Fenstern auf dem Bildschirm verdeckt wird, gilt als sichtbar. Dasselbe gilt für minimierte Fenster und Fenster, die sich auf einem anderen virtuellen Desktop befinden (auf Plattformen, die dieses Konzept unterstützen). Ein Widget erhält spontane „show“- und „hide“-Ereignisse, wenn sein Zuordnungsstatus vom Fenstersystem geändert wird, z. B. ein spontanes „hide“-Ereignis, wenn der Benutzer das Fenster minimiert, und ein spontanes „show“-Ereignis, wenn das Fenster wiederhergestellt wird.
Sie müssen die Funktion `setVisible()` nur selten neu implementieren. Wenn Sie vor dem Einblenden eines Widgets einige Einstellungen ändern müssen, verwenden Sie stattdessen ` showEvent()`. Wenn Sie eine verzögerte Initialisierung durchführen müssen, nutzen Sie das an die Funktion ` event()` übermittelte „Polish“-Ereignis.
Zugriffsfunktionen:
| bool | isVisible() const |
| virtual void | setVisible(bool visible) |
Siehe auch show(), hide(), isHidden(), isVisibleTo(), isMinimized(), showEvent() und hideEvent().
whatsThis : QString
Diese Eigenschaft enthält den „Was ist das?“-Hilfetext des Widgets.
Standardmäßig enthält diese Eigenschaft eine leere Zeichenfolge.
Zugriffsfunktionen:
| QString | whatsThis() const |
| void | setWhatsThis(const QString &) |
Siehe auch „ QWhatsThis “, „ QWidget::toolTip “ und „ QWidget::statusTip “.
[read-only] width : int
Diese Eigenschaft gibt die Breite des Widgets ohne den Fensterrahmen an
Einen Überblick über geometrische Aspekte von Fenstern finden Sie in der Dokumentation zur Fenstergeometrie.
Hinweis: VerwendenSie diese Funktion nicht, um die Breite eines Bildschirms auf einem Desktop mit mehreren Bildschirmen zu ermitteln. Weitere Informationen finden Sie unter „ QScreen “.
Standardmäßig enthält diese Eigenschaft einen Wert, der von der Plattform und der Bildschirmgeometrie des Benutzers abhängt.
Zugriffsfunktionen:
| int | width() const |
Siehe auch geometry, height und size.
windowFilePath : QString
Diese Eigenschaft enthält den Dateipfad, der einem Widget zugeordnet ist
Diese Eigenschaft ist nur für Fenster von Bedeutung. Sie ordnet einem Fenster einen Dateipfad zu. Wenn Sie den Dateipfad festlegen, aber keinen Fenstertitel angegeben haben, setzt Qt den Fenstertitel auf den Dateinamen des angegebenen Pfads, der mit ` QFileInfo::fileName()` ermittelt wird.
Wird der Fenstertitel zu irgendeinem Zeitpunkt festgelegt, hat dieser Vorrang und wird anstelle der Dateipfadzeichenfolge angezeigt.
Zusätzlich hat dies unter macOS den zusätzlichen Vorteil, dass das Proxy-Symbol für das Fenster festgelegt wird, vorausgesetzt, der Dateipfad existiert.
Wenn kein Dateipfad festgelegt ist, enthält diese Eigenschaft eine leere Zeichenfolge.
Standardmäßig enthält diese Eigenschaft eine leere Zeichenkette.
Zugriffsfunktionen:
| QString | windowFilePath() const |
| void | setWindowFilePath(const QString &filePath) |
Siehe auch windowTitle und windowIcon.
windowFlags : Qt::WindowFlags
Fensterflags bestehen aus einer Kombination aus einem Typ (z. B. Qt::Dialog) und null oder mehr Hinweisen an das Fenstersystem (z. B. Qt::FramelessWindowHint).
Wenn das Widget den Typ „ Qt::Widget “ oder „ Qt::SubWindow “ hatte und zu einem Fenster wird (z. B. „Qt::Window “, „ Qt::Dialog “ usw.), wird es an der Position (0, 0) auf dem Desktop platziert. Wenn das Widget ein Fenster ist und zu einem „ Qt::Widget “ oder „ Qt::SubWindow “ wird, wird es an der Position (0, 0) relativ zu seinem übergeordneten Widget platziert.
Hinweis: Diese Funktion ruft „ setParent()“ auf, wenn die Flags für ein Fenster geändert werden, wodurch das Widget ausgeblendet wird. Sie müssen „ show()“ aufrufen, um das Widget wieder sichtbar zu machen.
Zugriffsfunktionen:
| Qt::WindowFlags | windowFlags() const |
| void | setWindowFlags(Qt::WindowFlags type) |
Siehe auch „ windowType()“, „ setWindowFlag()“ und das Beispiel zu Fensterflags.
windowIcon : QIcon
Diese Eigenschaft enthält das Symbol des Widgets
Diese Eigenschaft ist nur für Fenster von Bedeutung. Wenn kein Symbol festgelegt wurde, gibt `windowIcon()` das Anwendungssymbol zurück (QApplication::windowIcon()).
Hinweis: Unter macOS stellen Fenstersymbole das aktive Dokument dar und werden nur angezeigt, wenn zusätzlich ein Dateipfad über ` setWindowFilePath` festgelegt wurde.
Zugriffsfunktionen:
| QIcon | windowIcon() const |
| void | setWindowIcon(const QIcon &icon) |
Notifier-Signal:
| void | windowIconChanged(const QIcon &icon) |
Siehe auch „ windowTitle “ und „ setWindowFilePath “.
windowModality : Qt::WindowModality
Diese Eigenschaft gibt an, welche Fenster durch das modale Widget blockiert werden
Diese Eigenschaft ist nur für Fenster relevant. Ein modales Widget verhindert, dass Widgets in anderen Fenstern Eingaben empfangen können. Der Wert dieser Eigenschaft legt fest, welche Fenster blockiert werden, wenn das Widget sichtbar ist. Eine Änderung dieser Eigenschaft, während das Fenster sichtbar ist, hat keine Auswirkung; Sie müssen das Widget zunächst mit „ hide()“ ausblenden und anschließend erneut mit „ show()“ einblenden.
Standardmäßig ist diese Eigenschaft auf „ Qt::NonModal “ gesetzt.
Zugriffsfunktionen:
| Qt::WindowModality | windowModality() const |
| void | setWindowModality(Qt::WindowModality windowModality) |
Siehe auch „ isWindow()“, „ QWidget::modal “ und „ QDialog “.
windowModified : bool
Diese Eigenschaft gibt an, ob das im Fenster angezeigte Dokument ungelesene Änderungen enthält
Ein geändertes Fenster ist ein Fenster, dessen Inhalt sich geändert hat, aber noch nicht auf der Festplatte gespeichert wurde. Dieses Kennzeichen hat je nach Plattform unterschiedliche Auswirkungen. Unter macOS wird die Schaltfläche „Schließen“ anders dargestellt; auf anderen Plattformen wird im Fenstertitel ein „*“ (Sternchen) angezeigt.
Der Fenstertitel muss den Platzhalter „[*]“ enthalten, der angibt, wo das „*“ erscheinen soll. Normalerweise sollte es direkt nach dem Dateinamen erscheinen (z. B. „document1.txt[*] – Texteditor“). Ist das Fenster nicht geändert, wird der Platzhalter einfach entfernt.
Beachten Sie: Wenn ein Widget als geändert markiert wird, werden auch alle seine übergeordneten Elemente als geändert markiert. Wenn Sie jedoch die Funktion ` setWindowModified(false) ` für ein Widget aufrufen, wird dies nicht auf dessen übergeordnetes Element übertragen, da möglicherweise andere untergeordnete Elemente des übergeordneten Elements geändert wurden.
Zugriffsfunktionen:
| bool | isWindowModified() const |
| void | setWindowModified(bool) |
Siehe auch ` windowTitle`.
windowOpacity : double
Diese Eigenschaft gibt den Deckkraftwert des Fensters an.
Der gültige Bereich für die Deckkraft reicht von 1,0 (vollständig undurchsichtig) bis 0,0 (vollständig transparent).
Standardmäßig ist der Wert dieser Eigenschaft 1,0.
Diese Funktion ist auf Embedded-Linux-, macOS-, Windows- und X11-Plattformen verfügbar, die die Composite-Erweiterung unterstützen.
Hinweis: Unter X11 muss ein Composite-Manager ausgeführt werden, und das X11-spezifische Atom _NET_WM_WINDOW_OPACITY muss vom verwendeten Fenstermanager unterstützt werden.
Warnung: Das Ändern dieser Eigenschaft von undurchsichtig zu transparent kann ein Zeichenereignis auslösen, das verarbeitet werden muss, bevor das Fenster korrekt angezeigt wird. Dies betrifft vor allem die Verwendung von ` QScreen::grabWindow()`. Beachten Sie außerdem, dass halbtransparente Fenster deutlich langsamer aktualisiert und in der Größe angepasst werden als undurchsichtige Fenster.
Zugriffsfunktionen:
| qreal | windowOpacity() const |
| void | setWindowOpacity(qreal level) |
Siehe auch ` setMask()`.
windowTitle : QString
Diese Eigenschaft enthält den Fenstertitel (Beschriftung)
Diese Eigenschaft ist nur für Widgets der obersten Ebene sinnvoll, wie beispielsweise Fenster und Dialoge. Wenn keine Beschriftung festgelegt wurde, basiert der Titel auf dem „ windowFilePath “. Ist keines von beiden festgelegt, ist der Titel eine leere Zeichenkette.
Wenn Sie den Mechanismus „ windowModified “ verwenden, muss der Fenstertitel einen Platzhalter „[*]“ enthalten, der angibt, wo das „*“ erscheinen soll. Normalerweise sollte er direkt nach dem Dateinamen stehen (z. B. „document1.txt[*] – Text Editor“). Ist die Eigenschaft „ windowModified “ auf „ false “ gesetzt (Standardeinstellung), wird der Platzhalter einfach entfernt.
Auf einigen Desktop-Plattformen (einschließlich Windows und Unix) wird der Anwendungsname (aus QGuiApplication::applicationDisplayName) am Ende des Fenstertitels angehängt, sofern er festgelegt ist. Dies erfolgt durch das QPA-Plugin, sodass er dem Benutzer angezeigt wird, jedoch nicht Teil der Zeichenkette `windowTitle` ist.
Zugriffsfunktionen:
| QString | windowTitle() const |
| void | setWindowTitle(const QString &) |
Notifier-Signal:
| void | windowTitleChanged(const QString &title) |
Siehe auch windowIcon, windowModified und windowFilePath.
[read-only] x : int
Diese Eigenschaft enthält die x-Koordinate des Widgets relativ zu seinem übergeordneten Element, einschließlich des Fensterrahmens
Einen Überblick über geometrische Aspekte von Fenstern finden Sie in der Dokumentation zur Fenstergeometrie.
Standardmäßig hat diese Eigenschaft den Wert 0.
Zugriffsfunktionen:
| int | x() const |
Siehe auch „ frameGeometry “, „ y “ und „ pos “.
[read-only] y : int
Diese Eigenschaft enthält die y-Koordinate des Widgets relativ zu seinem übergeordneten Element, einschließlich des Fensterrahmens
Einen Überblick über geometrische Aspekte von Fenstern finden Sie in der Dokumentation zur Fenstergeometrie.
Standardmäßig hat diese Eigenschaft den Wert 0.
Zugriffsfunktionen:
| int | y() const |
Siehe auch „ frameGeometry “, „ x “ und „ pos “.
Dokumentation zu den Mitgliedsfunktionen
[explicit] QWidget::QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
Erstellt ein Widget, das ein untergeordnetes Element von ` parent` ist, wobei die Widget-Flags auf ` f` gesetzt sind.
Ist parent gleich nullptr, wird das neue Widget zu einem Fenster. Ist parent ein anderes Widget, wird dieses Widget zu einem untergeordneten Fenster innerhalb von parent. Das neue Widget wird gelöscht, wenn sein parent gelöscht wird.
Das Argument „widget flags“ ( f) ist normalerweise 0, kann jedoch gesetzt werden, um den Rahmen eines Fensters anzupassen (d. h., parent muss nullptr sein). Um den Rahmen anzupassen, verwenden Sie einen Wert, der sich aus der bitweisen ODER-Verknüpfung beliebiger der window flags zusammensetzt.
Wenn Sie einem bereits sichtbaren Widget ein untergeordnetes Widget hinzufügen, müssen Sie das untergeordnete Widget explizit anzeigen, damit es sichtbar wird.
Beachten Sie, dass die X11-Version von Qt möglicherweise nicht alle Kombinationen von Stilflags auf allen Systemen bereitstellen kann. Dies liegt daran, dass Qt unter X11 nur den Fenstermanager befragen kann und der Fenstermanager die Einstellungen der Anwendung überschreiben kann. Unter Windows kann Qt beliebige Flags setzen.
Siehe auch windowFlags.
[virtual noexcept] QWidget::~QWidget()
Löscht das Widget.
Zuvor werden alle untergeordneten Elemente dieses Widgets gelöscht. Die Anwendung wird beendet, wenn dieses Widget das Haupt-Widget ist.
[virtual protected] void QWidget::actionEvent(QActionEvent *event)
Dieser Ereignis-Handler wird mit dem angegebenen „ event “ aufgerufen, sobald sich die Aktionen des Widgets ändern.
Siehe auch addAction(), insertAction(), removeAction(), actions() und QActionEvent.
QList<QAction *> QWidget::actions() const
Gibt die (möglicherweise leere) Liste der Aktionen dieses Widgets zurück.
Siehe auch „ contextMenuPolicy“ , „ insertAction()“ und „ removeAction()“.
void QWidget::activateWindow()
Legt das übergeordnete Widget, das dieses Widget enthält, als aktives Fenster fest.
Ein aktives Fenster ist ein sichtbares Fenster der obersten Ebene, das den Tastatureingabefokus besitzt.
Diese Funktion führt denselben Vorgang aus wie ein Mausklick auf die Titelleiste eines Top-Level-Fensters. Unter X11 hängt das Ergebnis vom Window-Manager ab. Wenn Sie sicherstellen möchten, dass das Fenster zusätzlich ganz oben gestapelt wird, sollten Sie zusätzlich ` raise()` aufrufen. Beachten Sie, dass das Fenster sichtbar sein muss, andernfalls hat `activateWindow()` keine Wirkung.
Unter Windows wird das Fenster nicht zum aktiven Fenster, wenn Sie diese Funktion aufrufen, während die Anwendung gerade nicht aktiv ist. Stattdessen wird die Farbe des Eintrags in der Taskleiste geändert, um anzuzeigen, dass sich am Fenster etwas geändert hat. Dies liegt daran, dass Microsoft es nicht zulässt, dass eine Anwendung die aktuelle Tätigkeit des Benutzers in einer anderen Anwendung unterbricht.
Siehe auch isActiveWindow(), window() und show().
void QWidget::addAction(QAction *action)
Fügt die Aktion „ action “ zur Aktionsliste dieses Widgets hinzu.
Alle QWidgets verfügen über eine Liste von „ QActions“. Diese können jedoch grafisch auf viele verschiedene Arten dargestellt werden. Die Standardverwendung der „ QAction “-Liste (wie sie von „ actions()“ zurückgegeben wird) dient dazu, ein „context QMenu “ zu erstellen.
Ein „ QWidget “ sollte von jeder Aktion nur jeweils eine Instanz besitzen; das Hinzufügen einer bereits vorhandenen Aktion führt nicht dazu, dass dieselbe Aktion zweimal im Widget vorhanden ist.
Die Eigentumsrechte an action werden nicht auf dieses QWidget übertragen.
Siehe auch „ removeAction()“, „ insertAction()“, „ actions()“ und „ QMenu “.
[since 6.3] QAction *QWidget::addAction(const QString &text)
[since 6.3] QAction *QWidget::addAction(const QIcon &icon, const QString &text)
[since 6.3] QAction *QWidget::addAction(const QString &text, const QKeySequence &shortcut)
[since 6.3] QAction *QWidget::addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut)
Diese Hilfsfunktionen erstellen eine neue Aktion mit dem Text „ text “, dem Symbol „ icon “ und gegebenenfalls der Tastenkombination „ shortcut “.
Die Funktionen fügen die neu erstellte Aktion zur Aktionsliste des Widgets hinzu und geben sie zurück.
QWidget übernimmt die Verantwortung für das zurückgegebene ` QAction`.
Diese Funktionen wurden in Qt 6.3 eingeführt.
[since 6.3] template <typename... Args, typename = QWidget::compatible_action_slot_args<Args...>> QAction *QWidget::addAction(const QString &text, Args &&... args)
[since 6.3] template <typename... Args, typename = QWidget::compatible_action_slot_args<Args...>> QAction *QWidget::addAction(const QIcon &icon, const QString &text, Args &&... args)
[since 6.3] template <typename... Args, typename = QWidget::compatible_action_slot_args<Args...>> QAction *QWidget::addAction(const QString &text, const QKeySequence &shortcut, Args &&... args)
[since 6.3] template <typename... Args, typename = QWidget::compatible_action_slot_args<Args...>> QAction *QWidget::addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut, Args &&... args)
Diese Hilfsfunktionen erstellen eine neue Aktion mit dem Text „ text “, dem Symbol „ icon “ und gegebenenfalls der Tastenkombination „ shortcut “.
Das Signal „ triggered()“ der Aktion wird so angeschlossen, als würde „ QObject::connect(action, &QAction::triggered, args...)“ aufgerufen, wobei „ args “ einschließlich eines möglichen „ Qt::ConnectionType “ vollständig weitergeleitet wird.
Die Funktion fügt die neu erstellte Aktion zur Aktionsliste des Widgets hinzu und gibt diese zurück.
QWidget übernimmt die Verantwortung für den zurückgegebenen ` QAction`.
Diese Funktionen wurden in Qt 6.3 eingeführt.
[since 6.3] QAction *QWidget::addAction(const QString &text, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)
[since 6.3] QAction *QWidget::addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)
[since 6.3] QAction *QWidget::addAction(const QString &text, const QKeySequence &shortcut, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)
[since 6.3] QAction *QWidget::addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut, const QObject *receiver, const char *member, Qt::ConnectionType type = Qt::AutoConnection)
Diese Komfortfunktion erstellt eine neue Aktion mit dem Text „ text “, dem Symbol „ icon “ und gegebenenfalls der Tastenkombination „ shortcut “.
Das Signal „ triggered()“ der Aktion wird mit dem Slot „ member “ von „ receiver “ verbunden. Die Funktion fügt die neu erstellte Aktion zur Aktionsliste des Widgets hinzu und gibt sie zurück.
QWidget übernimmt die Verantwortung für das zurückgegebene ` QAction`.
Diese Funktionen wurden in Qt 6.3 eingeführt.
void QWidget::addActions(const QList<QAction *> &actions)
Fügt die Aktionen „ actions “ zur Aktionsliste dieses Widgets hinzu.
Siehe auch „ removeAction()“, „ QMenu “ und „ addAction()“.
void QWidget::adjustSize()
Passen die Größe des Widgets an seinen Inhalt an.
Diese Funktion verwendet ` sizeHint()`, sofern diese gültig ist, d. h., die Breite und Höhe des Größenhinweises sind >= 0. Andernfalls wird die Größe auf das untergeordnete Rechteck festgelegt, das alle untergeordneten Widgets abdeckt (die Vereinigung aller Rechtecke der untergeordneten Widgets).
Bei Fenstern wird zudem die Bildschirmgröße berücksichtigt. Ist der Größenhint ` sizeHint()` kleiner als (200, 100) und die Größenrichtlinie ` expanding`, beträgt die Mindestgröße des Fensters (200, 100). Die maximale Größe eines Fensters beträgt 2/3 der Bildschirmbreite und -höhe.
Siehe auch sizeHint() und childrenRect().
QPalette::ColorRole QWidget::backgroundRole() const
Gibt die Hintergrundrolle des Widgets zurück.
Die Hintergrundrolle definiert den Pinsel aus dem „ palette “ des Widgets, der zum Rendern des Hintergrunds verwendet wird.
Wenn keine explizite Hintergrundrolle festgelegt ist, erbt das Widget die Hintergrundrolle seines übergeordneten Widgets.
Siehe auch „ setBackgroundRole()“ und „ foregroundRole()“.
QBackingStore *QWidget::backingStore() const
Gibt das ` QBackingStore ` zurück, in das dieses Widget gezeichnet wird.
[virtual protected] void QWidget::changeEvent(QEvent *event)
Dieser Ereignis-Handler kann neu implementiert werden, um Zustandsänderungen zu verarbeiten.
Der in diesem Ereignis geänderte Zustand kann über das bereitgestellte ` event ` abgerufen werden.
Zu den Änderungsereignissen gehören: „ QEvent::ToolBarChange “, „ QEvent::ActivationChange “, „ QEvent::EnabledChange “, „ QEvent::FontChange “, „ QEvent::StyleChange “, „ QEvent::PaletteChange “, „ QEvent::WindowTitleChange “, „ QEvent::IconTextChange “, „ QEvent::ModifiedChange “, „ QEvent::MouseTrackingChange “, „ QEvent::ParentChange “, „ QEvent::WindowStateChange “, „ QEvent::LanguageChange “, „ QEvent::LocaleChange “, „ QEvent::LayoutDirectionChange “ und „ QEvent::ReadOnlyChange “.
QWidget *QWidget::childAt(int x, int y) const
Gibt das sichtbare untergeordnete Widget an der Position (x, y) im Koordinatensystem des Widgets zurück. Befindet sich an der angegebenen Position kein sichtbares untergeordnetes Widget, gibt die Funktion „ nullptr “ zurück.
QWidget *QWidget::childAt(const QPoint &p) const
Gibt das sichtbare untergeordnete Widget am Punkt p im eigenen Koordinatensystem des Widgets zurück.
Dies ist eine überladene Funktion.
[since 6.8] QWidget *QWidget::childAt(const QPointF &p) const
Gibt das sichtbare untergeordnete Widget am Punkt p im eigenen Koordinatensystem des Widgets zurück.
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.8 eingeführt.
void QWidget::clearFocus()
Entzieht dem Widget den Fokus für Tastatureingaben.
Wenn das Widget den Fokus hat, wird ein „ focus out event “ an dieses Widget gesendet, um ihm mitzuteilen, dass es den Fokus verloren hat.
Dieses Widget muss die Fokuseinstellung aktivieren, um den Tastatureingabefokus zu erhalten; das heißt, es muss ` setFocusPolicy()` aufrufen.
Siehe auch „ hasFocus()“, „ setFocus()“, „ focusInEvent()“, „ focusOutEvent()“, „ setFocusPolicy()“ und „ QApplication::focusWidget()“.
void QWidget::clearMask()
Entfernt alle mit „ setMask()“ festgelegten Masken.
Siehe auch setMask().
[slot] bool QWidget::close()
Schließt dieses Widget. Gibt „ true “ zurück, wenn das Widget geschlossen wurde; andernfalls wird „ false “ zurückgegeben.
Zunächst wird dem Widget ein „ QCloseEvent “ gesendet. Das Widget ist „ hidden “, wenn es das „close“-Ereignis „ accepts “ (abfängt). Wenn es das Ereignis „ ignores “ (ignoriert), geschieht nichts. Die Standardimplementierung von „ QWidget::closeEvent()“ akzeptiert das „close“-Ereignis.
Wenn das Widget das Flag „ Qt::WA_DeleteOnClose “ gesetzt hat, wird es zudem gelöscht. Ein „close“-Ereignis wird an das Widget gesendet, unabhängig davon, ob das Widget sichtbar ist oder nicht.
Das Signal „ QGuiApplication::lastWindowClosed()“ wird ausgelöst, wenn das letzte sichtbare primäre Fenster (d. h. ein Fenster ohne übergeordnetes Fenster), bei dem das Attribut „ Qt::WA_QuitOnClose “ gesetzt ist, geschlossen wird. Standardmäßig ist dieses Attribut für alle Widgets gesetzt, mit Ausnahme von vorübergehenden Fenstern wie Startbildschirmen, Werkzeugfenstern und Popup-Menüs.
[virtual protected] void QWidget::closeEvent(QCloseEvent *event)
Dieser Ereignis-Handler wird mit dem angegebenen „ event “ aufgerufen, wenn Qt vom Fenstersystem eine Anforderung zum Schließen eines Widgets der obersten Ebene erhält.
Standardmäßig wird das Ereignis akzeptiert und das Widget geschlossen. Sie können diese Funktion neu implementieren, um das Verhalten des Widgets bei Fenster-Schließanforderungen anzupassen. Beispielsweise können Sie das Schließen des Fensters verhindern, indem Sie bei allen Ereignissen ` ignore()` aufrufen.
Hauptfenster-Anwendungen verwenden in der Regel eine Neuimplementierung dieser Funktion, um zu prüfen, ob die Arbeit des Benutzers gespeichert wurde, und vor dem Schließen um Erlaubnis zu bitten.
Siehe auch event(), hide(), close() und QCloseEvent.
QMargins QWidget::contentsMargins() const
Die Funktion „contentsMargins“ gibt die Ränder des Widget-Inhalts zurück.
Siehe auch „ setContentsMargins()“ und „ contentsRect()“.
QRect QWidget::contentsRect() const
Gibt den Bereich innerhalb der Ränder des Widgets zurück.
Siehe auch „ setContentsMargins()“ und „ contentsMargins()“.
[virtual protected] void QWidget::contextMenuEvent(QContextMenuEvent *event)
Dieser Ereignis-Handler für das Ereignis „ event “ kann in einer Unterklasse neu implementiert werden, um Ereignisse des Widget-Kontextmenüs zu empfangen.
Der Handler wird aufgerufen, wenn das „ contextMenuPolicy “ des Widgets auf „ Qt::DefaultContextMenu “ gesetzt ist.
Die Standardimplementierung ignoriert das Kontext-Ereignis. Weitere Details finden Sie in der Dokumentation zu ` QContextMenuEvent `.
Siehe auch „ event()“, „ QContextMenuEvent “ und „ customContextMenuRequested()“.
[protected] void QWidget::create(WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true)
Erstellt ein neues Widget-Fenster.
Die Parameter „ window “, „ initializeWindow “ und „ destroyOldWindow “ werden in Qt 5 ignoriert. Bitte verwenden Sie „ QWindow::fromWinId()“, um ein „ QWindow “ zu erstellen, das ein externes Fenster umschließt, und übergeben Sie dieses stattdessen an „ QWidget::createWindowContainer()“.
Siehe auch createWindowContainer() und QWindow::fromWinId().
[static] QWidget *QWidget::createWindowContainer(QWindow *window, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
Erstellt einen „ QWidget “, der es ermöglicht, „ window “ in eine auf „ QWidget “ basierende Anwendung einzubetten.
Der Fenstercontainer wird als untergeordnetes Element von ` parent ` und mit den Fensterflags ` flags` erstellt.
Sobald das Fenster in den Container eingebettet wurde, steuert der Container die Geometrie und Sichtbarkeit des Fensters. Explizite Aufrufe von QWindow::setGeometry(), QWindow::show() oder QWindow::hide() für ein eingebettetes Fenster werden nicht empfohlen.
Der Container übernimmt die Eigentümerschaft an ` window`. Das Fenster kann durch einen Aufruf von ` QWindow::setParent()` aus dem Fenstercontainer entfernt werden.
Der Fenstercontainer wird als natives untergeordnetes Fenster an das oberste Fenster angehängt, dessen untergeordnetes Element er ist. Wenn ein Fenstercontainer als untergeordnetes Element eines „ QAbstractScrollArea “ oder „ QMdiArea “ verwendet wird, erstellt er für jedes Widget in seiner übergeordneten Kette ein „ native window “, um in diesem Anwendungsfall eine korrekte Stapelung und Beschneidung zu ermöglichen. Das Erstellen eines nativen Fensters für den Fenstercontainer ermöglicht ebenfalls eine korrekte Stapelung und Beschneidung. Dies muss vor dem Anzeigen des Fenstercontainers erfolgen. Bei Anwendungen mit vielen nativen untergeordneten Fenstern können Leistungsprobleme auftreten.
Der Fenstercontainer weist eine Reihe bekannter Einschränkungen auf:
- Stapelreihenfolge: Das eingebettete Fenster wird als undurchsichtige Box oberst in der Widget-Hierarchie angeordnet. Die Stapelreihenfolge mehrerer sich überlappender Fenstercontainer-Instanzen ist nicht definiert.
- Rendering-Integration: Der Fenstercontainer ist nicht kompatibel mit ` QGraphicsProxyWidget`, ` QWidget::render()` oder ähnlichen Funktionen.
- Fokusbehandlung: Es ist möglich, der Instanz des Fenster-Containers eine beliebige Fokusrichtlinie zuzuweisen, und sie delegiert den Fokus über einen Aufruf von ` QWindow::requestActivate()` an das Fenster. Die Rückkehr zur normalen Fokus-Kette von der ` QWindow `-Instanz hängt jedoch von der Implementierung der ` QWindow `-Instanz selbst ab. Außerdem ist es plattformabhängig, ob ` QWindow::requestActivate()` dem Fenster tatsächlich den Fokus übergibt.
Beim Einbetten eines auf Qt Quick basierenden Fensters sorgt Qt automatisch dafür, dass Tabulatortasten-Eingaben zum Ein- und Ausblenden des eingebetteten QML-Fensters führen, sodass der Fokus zum nächsten oder vorherigen fokussierbaren Objekt in der Fenster-Container-Kette wechseln kann.
- Die Verwendung vieler Fenstercontainer-Instanzen in einer auf „ QWidget “ basierenden Anwendung kann die Gesamtleistung der Anwendung erheblich beeinträchtigen.
Hinweis: Wenn „ window “ zu einem Widget gehört (d. h., „ window “ wurde durch den Aufruf von „ windowHandle()“ empfangen), wird kein Container erstellt. Stattdessen gibt diese Funktion das Widget selbst zurück, nachdem es unter „ parent “ neu zugeordnet wurde. Da kein Container erstellt wird, wird „ flags “ ignoriert. Mit anderen Worten: Wenn „ window “ zu einem Widget gehört, sollten Sie in Betracht ziehen, dieses Widget einfach unter „ parent “ neu zuzuordnen, anstatt diese Funktion zu verwenden.
[signal] void QWidget::customContextMenuRequested(const QPoint &pos)
Dieses Signal wird ausgelöst, wenn die Eigenschaft „ contextMenuPolicy “ des Widgets den Wert „ Qt::CustomContextMenu “ hat und der Benutzer ein Kontextmenü für das Widget angefordert hat. Die Position „ pos “ ist die Position des Kontextmenü-Ereignisses, das das Widget empfängt. Normalerweise handelt es sich dabei um Widget-Koordinaten. Eine Ausnahme von dieser Regel bilden „ QAbstractScrollArea “ und dessen Unterklassen, die das Kontextmenü-Ereignis auf die Koordinaten von „ viewport()“ abbilden.
Siehe auch mapToGlobal(), QMenu und contextMenuPolicy.
[protected] void QWidget::destroy(bool destroyWindow = true, bool destroySubWindows = true)
Gibt Ressourcen des Fenstersystems frei. Löscht das Widget-Fenster, wenn destroyWindow auf „true“ gesetzt ist.
destroy() ruft sich selbst rekursiv für alle untergeordneten Widgets auf und übergibt dabei destroySubWindows als Parameter für „ destroyWindow “. Um mehr Kontrolle über die Zerstörung von Unter-Widgets zu haben, sollten diese zunächst selektiv zerstört werden.
Diese Funktion wird in der Regel aus dem Destruktor von ` QWidget ` aufgerufen.
[virtual protected] void QWidget::dragEnterEvent(QDragEnterEvent *event)
Dieser Ereignis-Handler wird aufgerufen, wenn ein Drag-Vorgang läuft und die Maus in dieses Widget gelangt. Das Ereignis wird über den Parameter „ event “ übergeben.
Wird das Ereignis ignoriert, erhält das Widget keine „ drag move events “-Daten.
Einen Überblick darüber, wie Sie Drag-and-Drop in Ihrer Anwendung implementieren können, finden Sie in der Dokumentation zu Drag-and-Drop.
Siehe auch „ QDrag “ und „ QDragEnterEvent “.
[virtual protected] void QWidget::dragLeaveEvent(QDragLeaveEvent *event)
Dieser Ereignis-Handler wird aufgerufen, wenn ein Drag-Vorgang läuft und die Maus dieses Widget verlässt. Das Ereignis wird über den Parameter „ event “ übergeben.
Einen Überblick darüber, wie Sie Drag-and-Drop in Ihrer Anwendung implementieren können, finden Sie in der Dokumentation zu Drag-and-Drop.
Siehe auch „ QDrag “ und „ QDragLeaveEvent “.
[virtual protected] void QWidget::dragMoveEvent(QDragMoveEvent *event)
Dieser Ereignis-Handler wird aufgerufen, wenn ein Drag-Vorgang im Gange ist und eine der folgenden Bedingungen eintritt: Der Cursor betritt dieses Widget, der Cursor bewegt sich innerhalb dieses Widgets oder eine Modifikatortaste wird auf der Tastatur gedrückt, während dieses Widget den Fokus hat. Das Ereignis wird über den Parameter „ event “ übergeben.
Einen Überblick darüber, wie Sie Drag-and-Drop in Ihrer Anwendung implementieren können, finden Sie in der Dokumentation zu Drag-and-Drop.
Siehe auch „ QDrag “ und „ QDragMoveEvent “.
[virtual protected] void QWidget::dropEvent(QDropEvent *event)
Dieser Ereignis-Handler wird aufgerufen, wenn das gezogene Element auf diesem Widget abgelegt wird. Das Ereignis wird über den Parameter „ event “ übergeben.
Einen Überblick darüber, wie Sie Drag-and-Drop in Ihrer Anwendung implementieren können, finden Sie in der Dokumentation zu Drag-and-Drop.
Siehe auch „ QDrag “ und „ QDropEvent “.
WId QWidget::effectiveWinId() const
Gibt die effektive Fenstersystem-ID des Widgets zurück, d. h. die Fenstersystem-ID des nativen übergeordneten Widgets.
Wenn es sich um ein natives Widget handelt, gibt diese Funktion die native Widget-ID zurück. Andernfalls wird die Fenster-ID des ersten nativen übergeordneten Widgets zurückgegeben, d. h. des Widgets der obersten Ebene, das dieses Widget enthält.
Hinweis: Wir empfehlen, diesen Wert nicht zu speichern, da er sich zur Laufzeit wahrscheinlich ändern wird.
Siehe auch ` nativeParentWidget()`.
void QWidget::ensurePolished() const
Stellt sicher, dass das Widget und seine untergeordneten Elemente von „ QStyle “ aufbereitet wurden (d. h., dass sie über eine korrekte Schriftart und Farbpalette verfügen).
QWidget Ruft diese Funktion auf, nachdem das Widget vollständig erstellt wurde, aber bevor es zum allerersten Mal angezeigt wird. Sie können diese Funktion aufrufen, wenn Sie sicherstellen möchten, dass das Widget vor der Ausführung einer Operation optimiert ist; beispielsweise könnte die korrekte Schriftgröße in der Neaimplementierung von ` sizeHint()` des Widgets erforderlich sein. Beachten Sie, dass diese Funktion aus der Standardimplementierung von ` sizeHint()` aufgerufen wird.
Die „Polishing“-Funktion ist nützlich für die abschließende Initialisierung, die erst erfolgen darf, nachdem alle Konstruktoren (sowohl aus Basisklassen als auch aus Unterklassen) aufgerufen wurden.
Wenn Sie beim „Polishing“ eines Widgets bestimmte Einstellungen ändern müssen, implementieren Sie ` event()` neu und verarbeiten Sie den Ereignistyp ` QEvent::Polish `.
Hinweis: Die Funktion ist als `const` deklariert, damit sie von anderen `const`-Funktionen (z. B. ` sizeHint()`) aufgerufen werden kann.
Siehe auch ` event()`.
[virtual protected] void QWidget::enterEvent(QEnterEvent *event)
Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um „Enter“-Ereignisse des Widgets zu empfangen, die über den Parameter „ event “ übergeben werden.
Ein Ereignis wird an das Widget gesendet, wenn der Mauszeiger in das Widget eintritt.
Siehe auch „ leaveEvent()“, „ mouseMoveEvent()“ und „ event()“.
[override virtual protected] bool QWidget::event(QEvent *event)
Umsetzt: ` QObject::event(QEvent *e)`.
Dies ist der Haupt-Ereignisbehandler; er verarbeitet das Ereignis „ event “. Sie können diese Funktion in einer Unterklasse neu implementieren, wir empfehlen jedoch, stattdessen einen der spezialisierten Ereignisbehandler zu verwenden.
Tastenanschlag- und Loslass-Ereignisse werden anders behandelt als andere Ereignisse. `event()` prüft auf `Tab` und `Shift+Tab` und versucht, den Fokus entsprechend zu verschieben. Wenn kein Widget vorhanden ist, auf das der Fokus verschoben werden kann (oder der Tastenanschlag nicht `Tab` oder `Shift+Tab` ist), ruft `event()` ` keyPressEvent()` auf.
Auch die Behandlung von Maus- und Tablet-Ereignissen ist etwas speziell: Nur wenn das Widget „ enabled “ ist, ruft `event()` die spezialisierten Handler wie ` mousePressEvent()` auf; andernfalls wird das Ereignis verworfen.
Diese Funktion gibt „ true “ zurück, wenn das Ereignis erkannt wurde, andernfalls gibt sie „ false “ zurück. Wurde das erkannte Ereignis akzeptiert (siehe „ QEvent::accepted “), wird jede weitere Verarbeitung, wie z. B. die Ereignisweitergabe an das übergeordnete Widget, gestoppt.
Siehe auch closeEvent(), focusInEvent(), focusOutEvent(), enterEvent(), keyPressEvent(), keyReleaseEvent(), leaveEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), mousePressEvent(), mouseReleaseEvent(), moveEvent(), paintEvent(), resizeEvent(), QObject::event() und QObject::timerEvent().
[static] QWidget *QWidget::find(WId id)
Gibt einen Zeiger auf das Widget mit der Fensterkennung/dem Fenster-Handle „ id “ zurück.
Der Typ der Fensterkennung hängt vom zugrunde liegenden Fenstersystem ab; die konkrete Definition finden Sie unter qwindowdefs.h. Wenn kein Widget mit dieser Kennung vorhanden ist, wird nullptr zurückgegeben.
[virtual protected] void QWidget::focusInEvent(QFocusEvent *event)
Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um Tastaturfokus-Ereignisse (Fokus erhalten) für das Widget zu empfangen. Das Ereignis wird über den Parameter „ event “ übergeben
Ein Widget muss normalerweise ` setFocusPolicy()` auf einen anderen Wert als ` Qt::NoFocus ` setzen, um Fokusereignisse zu empfangen. (Beachten Sie, dass der Anwendungsprogrammierer ` setFocus()` für jedes Widget aufrufen kann, auch für solche, die normalerweise keinen Fokus akzeptieren.)
Die Standardimplementierung aktualisiert das Widget (mit Ausnahme von Fenstern, für die kein ` focusPolicy()` angegeben ist).
Siehe auch focusOutEvent(), setFocusPolicy(), keyPressEvent(), keyReleaseEvent(), event() und QFocusEvent.
[protected] bool QWidget::focusNextChild()
Sucht ein neues Widget, dem der Tastaturfokus zugewiesen werden soll, entsprechend der Einstellung „ Tab “, und gibt „ true “ zurück, wenn ein neues Widget gefunden wird, andernfalls „false“.
Siehe auch focusPreviousChild().
[virtual protected] bool QWidget::focusNextPrevChild(bool next)
Sucht ein neues Widget, dem der Tastaturfokus zugewiesen werden soll, je nach Bedarf für „Tab“ und „Umschalt+Tab“, und gibt „ true “ zurück, wenn ein neues Widget gefunden wird, andernfalls „false“.
Ist „ next “ wahr, sucht diese Funktion vorwärts; ist „ next “ falsch, sucht sie rückwärts.
Manchmal möchten Sie diese Funktion neu implementieren. Beispielsweise könnte ein Webbrowser sie neu implementieren, um seinen „derzeit aktiven Link“ vorwärts oder rückwärts zu verschieben, und `focusNextPrevChild()` nur dann aufrufen, wenn er den letzten oder ersten Link auf der „Seite“ erreicht.
Untergeordnete Widgets rufen focusNextPrevChild() bei ihren übergeordneten Widgets auf, aber nur das Fenster, das die untergeordneten Widgets enthält, entscheidet, wohin der Fokus umgeleitet wird. Durch die Neuimplementierung dieser Funktion für ein Objekt erhalten Sie somit die Kontrolle über die Fokusnavigation für alle untergeordneten Widgets.
Siehe auch ` focusNextChild()` und ` focusPreviousChild()`.
[virtual protected] void QWidget::focusOutEvent(QFocusEvent *event)
Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um Tastaturfokus-Ereignisse (Fokusverlust) für das Widget zu empfangen. Die Ereignisse werden über den Parameter „ event “ übergeben.
Ein Widget muss normalerweise ` setFocusPolicy()` auf einen anderen Wert als ` Qt::NoFocus ` setzen, um Fokusereignisse zu empfangen. (Beachten Sie, dass der Anwendungsprogrammierer ` setFocus()` für jedes Widget aufrufen kann, auch für solche, die normalerweise keinen Fokus akzeptieren.)
Die Standardimplementierung aktualisiert das Widget (mit Ausnahme von Fenstern, für die kein ` focusPolicy()` angegeben ist).
Siehe auch „ focusInEvent()“, „ setFocusPolicy()“, „ keyPressEvent()“, „ keyReleaseEvent()“, „ event()“ und „ QFocusEvent “.
[protected] bool QWidget::focusPreviousChild()
Sucht ein neues Widget, dem der Tastaturfokus zugewiesen werden soll, entsprechend der Angabe in ` Shift+Tab`, und gibt ` true ` zurück, wenn ein neues Widget gefunden wird, andernfalls `false`.
Siehe auch focusNextChild().
QWidget *QWidget::focusProxy() const
Gibt den Fokus-Proxy zurück oder „ nullptr “, falls kein Fokus-Proxy vorhanden ist.
Siehe auch setFocusProxy().
QWidget *QWidget::focusWidget() const
Gibt das letzte untergeordnete Element dieses Widgets zurück, für das „ setFocus “ aufgerufen wurde. Bei Widgets der obersten Ebene ist dies das Widget, das den Fokus erhält, falls dieses Fenster aktiviert wird
Dies ist nicht dasselbe wie ` QApplication::focusWidget()`, das das Fokus-Widget im aktuell aktiven Fenster zurückgibt.
QFontInfo QWidget::fontInfo() const
Gibt die Schriftartinformationen für die aktuelle Schriftart des Widgets zurück. Entspricht „ QFontInfo(widget->font()) “.
Siehe auch „ font()“, „ fontMetrics()“ und „ setFont()“.
QFontMetrics QWidget::fontMetrics() const
Gibt die Schriftmetriken für die aktuelle Schriftart des Widgets zurück. Entspricht „ QFontMetrics(widget->font()) “.
Siehe auch „ font()“, „ fontInfo()“ und „ setFont()“.
QPalette::ColorRole QWidget::foregroundRole() const
Gibt die Vordergrundfarbe zurück.
Die Vordergrundrolle definiert die Farbe aus dem „ palette “ des Widgets, die zum Zeichnen des Vordergrunds verwendet wird.
Wenn keine explizite Vordergrundrolle festgelegt ist, gibt die Funktion eine Rolle zurück, die sich von der Hintergrundrolle abhebt.
Siehe auch „ setForegroundRole()“ und „ backgroundRole()“.
[invokable] QPixmap QWidget::grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1)))
Zeichnet das Widget in eine Pixmap, deren Größe durch die angegebene ` rectangle` begrenzt ist. Falls das Widget untergeordnete Elemente enthält, werden diese ebenfalls an den entsprechenden Positionen gezeichnet.
Wird ein Rechteck mit einer ungültigen Größe angegeben (Standardeinstellung), wird das gesamte Widget gezeichnet.
Hinweis: Diese Funktion kann über das Metaobjektsystem und aus QML aufgerufen werden. Siehe Q_INVOKABLE.
Siehe auch ` render()` und ` QPixmap`.
void QWidget::grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = Qt::GestureFlags())
Meldet das Widget bei einem bestimmten gesture mit spezifischen flags an.
Siehe auch ungrabGesture() und QGestureEvent.
void QWidget::grabKeyboard()
Übernimmt die Tastatureingabe.
Dieses Widget empfängt alle Tastaturereignisse, bis „ releaseKeyboard()“ aufgerufen wird; andere Widgets erhalten überhaupt keine Tastaturereignisse. Mausereignisse sind davon nicht betroffen. Verwenden Sie „ grabMouse()“, wenn Sie diese erfassen möchten.
Das Fokus-Widget ist davon nicht betroffen, außer dass es keine Tastaturereignisse empfängt. ` setFocus()` verschiebt den Fokus wie gewohnt, aber das neue Fokus-Widget empfängt Tastaturereignisse erst, nachdem ` releaseKeyboard()` aufgerufen wurde.
Wenn derzeit ein anderes Widget die Tastatureingabe erfasst, wird die Erfassung durch dieses Widget zuerst freigegeben.
Siehe auch „ releaseKeyboard()“, „ grabMouse()“, „ releaseMouse()“ und „ focusWidget()“.
void QWidget::grabMouse()
Übernimmt die Mauseingaben.
Dieses Widget empfängt alle Mausereignisse, bis „ releaseMouse()“ aufgerufen wird; andere Widgets erhalten überhaupt keine Mausereignisse. Tastaturereignisse sind davon nicht betroffen. Verwenden Sie „ grabKeyboard()“, wenn Sie diese abfangen möchten.
Warnung: Fehler in Anwendungen, die die Mauskontrolle übernehmen, führen sehr häufig dazu, dass das Terminal einfriert. Verwenden Sie diese Funktion mit äußerster Vorsicht und ziehen Sie während der Fehlersuche die Verwendung der Befehlszeilenoption ` -nograb ` in Betracht.
Bei der Verwendung von Qt ist es selten notwendig, die Maus zu erfassen, da Qt dies selbst sinnvoll übernimmt. Insbesondere erfasst Qt die Maus, wenn eine Maustaste gedrückt wird, und behält die Kontrolle, bis die letzte Taste losgelassen wird.
Hinweis: Nur sichtbare Widgets können Mauseingaben erfassen. Wenn ` isVisible()` für ein Widget ` false ` zurückgibt, kann dieses Widget `grabMouse()` nicht aufrufen.
Hinweis: Unter Windows funktioniert `grabMouse()` nur, wenn sich die Maus innerhalb eines Fensters befindet, das dem Prozess gehört. Unter macOS funktioniert `grabMouse()` nur, wenn sich die Maus innerhalb des Rahmens des betreffenden Widgets befindet.
Siehe auch ` releaseMouse()`, ` grabKeyboard()` und ` releaseKeyboard()`.
void QWidget::grabMouse(const QCursor &cursor)
Übernimmt die Mauseingabe und ändert die Form des Cursors.
Der Cursor nimmt die Form cursor an (solange der Mausfokus ergriffen ist) und dieses Widget ist das einzige, das Mausereignisse empfängt, bis releaseMouse() aufgerufen wird.
Warnung: Das Erfassen der Maus kann das Terminal sperren.
Hinweis: Siehe den Hinweis in ` QWidget::grabMouse()`.
Diese Funktion überlädt QWidget::grabMouse().
Siehe auch releaseMouse(), grabKeyboard(), releaseKeyboard() und setCursor().
int QWidget::grabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut)
Fügt dem Qt-Shortcut-System einen Shortcut hinzu, der in der angegebenen „ context “ auf die angegebene „ key “-Sequenz achtet. Wenn die „ context “ auf „ Qt::ApplicationShortcut “ gesetzt ist, gilt der Shortcut für die gesamte Anwendung. Andernfalls gilt er entweder lokal für dieses Widget („ Qt::WidgetShortcut “) oder für das Fenster selbst („ Qt::WindowShortcut “).
Wenn dieselbe Tastenkombination „ key “ von mehreren Widgets belegt wurde, wird bei Auftreten der Tastenkombination „ key “ ein „ QEvent::Shortcut “-Ereignis an alle betroffenen Widgets in nicht deterministischer Reihenfolge gesendet, wobei das Flag „ambiguous“ auf „true“ gesetzt ist.
Warnung: Normalerweise solltenSie diese Funktion nicht verwenden müssen; erstellen Sie stattdessen „ QActions“ mit den von Ihnen benötigten Tastenkombinationen (wenn Sie auch entsprechende Menüoptionen und Symbolleisten-Schaltflächen wünschen) oder erstellen Sie „ QShortcuts“, wenn Sie lediglich Tastenkombinationen benötigen. Sowohl „ QAction “ als auch „ QShortcut “ übernehmen die gesamte Ereignisfilterung für Sie und stellen Signale bereit, die ausgelöst werden, wenn der Benutzer die Tastenfolge auslöst; sie sind daher viel einfacher zu verwenden als diese Low-Level-Funktion.
Siehe auch releaseShortcut() und setShortcutEnabled().
QGraphicsEffect *QWidget::graphicsEffect() const
Die Funktion „graphicsEffect“ gibt einen Zeiger auf den Grafikeffekt des Widgets zurück.
Wenn das Widget keinen Grafikeffekt hat, wird ` nullptr ` zurückgegeben.
Siehe auch ` setGraphicsEffect()`.
QGraphicsProxyWidget *QWidget::graphicsProxyWidget() const
Gibt das Proxy-Widget für das entsprechende eingebettete Widget in einer Grafikansicht zurück; andernfalls wird „ nullptr “ zurückgegeben.
Siehe auch ` QGraphicsProxyWidget::createProxyForChildWidget()` und ` QGraphicsScene::addWidget()`.
[virtual] bool QWidget::hasHeightForWidth() const
Gibt „ true “ zurück, wenn die bevorzugte Höhe des Widgets von dessen Breite abhängt; andernfalls wird „ false “ zurückgegeben.
[virtual] int QWidget::heightForWidth(int w) const
Gibt die bevorzugte Höhe für dieses Widget zurück, ausgehend von der Breite w.
Verfügt dieses Widget über ein Layout, gibt die Standardimplementierung die bevorzugte Höhe des Layouts zurück. Ist kein Layout vorhanden, gibt die Standardimplementierung den Wert -1 zurück, was bedeutet, dass die bevorzugte Höhe nicht von der Breite abhängt.
[slot] void QWidget::hide()
Blendet das Widget aus. Diese Funktion entspricht „ setVisible(false)“.
Hinweis: Wenn Sie mit ` QDialog ` oder dessen Unterklassen arbeiten und nach dieser Funktion die Funktion ` show()` aufrufen, wird das Dialogfeld an seiner ursprünglichen Position angezeigt.
Siehe auch „ hideEvent()“, „ isHidden()“, „ show()“, „ setVisible()“, „ isVisible()“ und „ close()“.
[virtual protected] void QWidget::hideEvent(QHideEvent *event)
Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um Ereignisse zum Ausblenden von Widgets zu empfangen. Das Ereignis wird über den Parameter „ event “ übergeben.
Ausblendereignisse werden unmittelbar nach dem Ausblenden an Widgets gesendet.
Hinweis: Ein Widget empfängt spontane Einblend- und Ausblendereignisse, wenn sein Zuordnungsstatus vom Fenstersystem geändert wird, z. B. ein spontanes Ausblendereignis, wenn der Benutzer das Fenster minimiert, und ein spontanes Einblendereignis, wenn das Fenster wiederhergestellt wird. Nach dem Empfang eines spontanen Ausblendereignisses gilt ein Widget im Sinne von ` isVisible()` weiterhin als sichtbar.
Siehe auch visible, event() und QHideEvent.
[override virtual protected] void QWidget::initPainter(QPainter *painter) const
Initialisiert den Stift „ painter “, den Hintergrund und die Schriftart so, dass sie mit denen des angegebenen Widgets übereinstimmen. Diese Funktion wird automatisch aufgerufen, wenn der „ “ auf einer „ QWidget “ geöffnet wird.
[virtual protected] void QWidget::inputMethodEvent(QInputMethodEvent *event)
Dieser Ereignis-Handler für das Ereignis „ event “ kann in einer Unterklasse neu implementiert werden, um Ereignisse zur Zusammensetzung der Eingabemethode zu empfangen. Dieser Handler wird aufgerufen, wenn sich der Status der Eingabemethode ändert.
Beachten Sie, dass beim Erstellen benutzerdefinierter Textbearbeitungs-Widgets das Fensterattribut „ Qt::WA_InputMethodEnabled “ explizit (mithilfe der Funktion „ setAttribute()“) gesetzt werden muss, um Ereignisse der Eingabemethode zu empfangen.
Die Standardimplementierung ruft `event->ignore()` auf, wodurch das Eingabemethode-Ereignis zurückgewiesen wird. Weitere Details finden Sie in der Dokumentation zu ` QInputMethodEvent `.
Siehe auch „ event()“ und „ QInputMethodEvent “.
[virtual] QVariant QWidget::inputMethodQuery(Qt::InputMethodQuery query) const
Diese Methode ist nur für Eingabe-Widgets relevant. Sie wird von der Eingabemethode verwendet, um eine Reihe von Eigenschaften des Widgets abzufragen, damit komplexe Eingabemethodenoperationen wie die Unterstützung von umgebendem Text und Rückkonvertierungen unterstützt werden können.
query Gibt an, welche Eigenschaft abgefragt wird.
Siehe auch inputMethodEvent(), QInputMethodEvent, QInputMethodQueryEvent und inputMethodHints.
void QWidget::insertAction(QAction *before, QAction *action)
Fügt die Aktion „ action “ in die Aktionsliste dieses Widgets ein, und zwar vor der Aktion „ before “. Die Aktion wird angehängt, wenn „ before “ den Wert „ nullptr “ hat oder „ before “ keine gültige Aktion für dieses Widget ist.
Ein „ QWidget “ sollte von jeder Aktion nur jeweils eine enthalten.
Siehe auch „ removeAction()“, „ addAction()“, „ QMenu “, „ contextMenuPolicy “ und „ actions()“.
void QWidget::insertActions(QAction *before, const QList<QAction *> &actions)
Fügt die Aktion „ actions “ in die Aktionsliste dieses Widgets ein, und zwar vor der Aktion „ before “. Die Aktion wird angehängt, wenn „ before “ auf „ nullptr “ gesetzt ist oder „ before “ für dieses Widget keine gültige Aktion ist.
Ein „ QWidget “ kann von jeder Aktion höchstens eine enthalten.
Siehe auch „ removeAction()“, „ QMenu “, „ insertAction()“ und „ contextMenuPolicy “.
bool QWidget::isAncestorOf(const QWidget *child) const
Gibt „ true “ zurück, wenn dieses Widget ein übergeordnetes Widget (oder ein übergeordnetes Widget der nächsten Ebene usw. bis zu beliebiger Ebene) des angegebenen „ child “ ist und sich beide Widgets im selben Fenster befinden; andernfalls wird „ false “ zurückgegeben.
bool QWidget::isEnabledTo(const QWidget *ancestor) const
Gibt „ true “ zurück, wenn dieses Widget aktiviert würde, sofern „ ancestor “ aktiviert ist; andernfalls wird „ false “ zurückgegeben.
Dies ist der Fall, wenn weder das Widget selbst noch alle übergeordneten Elemente bis einschließlich ancestor (ausgenommen selbst) explizit deaktiviert wurden.
isEnabledTo(0) gibt „false“ zurück, wenn dieses Widget oder eines seiner übergeordneten Widgets explizit deaktiviert wurde.
Der Begriff „Vorfahre“ bezeichnet hier ein übergeordnetes Widget innerhalb desselben Fensters.
Daher endet isEnabledTo(0) beim Fenster dieses Widgets, im Gegensatz zu isEnabled(), das auch übergeordnete Fenster berücksichtigt.
Siehe auch ` setEnabled()` und ` enabled`.
bool QWidget::isHidden() const
Gibt „ true “ zurück, wenn das Widget ausgeblendet ist, andernfalls „ false “.
Ein ausgeblendetes Widget wird erst sichtbar, wenn „ show()“ dafür aufgerufen wird. Es wird nicht automatisch angezeigt, wenn das übergeordnete Element angezeigt wird.
Um die Sichtbarkeit zu prüfen, verwenden Sie stattdessen !isVisible() (beachten Sie das Ausrufezeichen).
`isHidden()` impliziert `!isVisible()`, aber ein Widget kann gleichzeitig nicht sichtbar und nicht ausgeblendet sein. Dies ist der Fall bei Widgets, die Kinder von nicht sichtbaren Widgets sind.
Widgets sind ausgeblendet, wenn:
- sie als eigenständige Fenster erstellt wurden,
- sie als untergeordnete Elemente sichtbarer Widgets erstellt wurden,
- hide() oder ` setVisible(false)` aufgerufen wurde.
bool QWidget::isVisibleTo(const QWidget *ancestor) const
Gibt „ true “ zurück, wenn dieses Widget sichtbar würde, sobald „ ancestor “ angezeigt wird; andernfalls wird „ false “ zurückgegeben.
Der Fall „true“ tritt ein, wenn weder das Widget selbst noch ein übergeordnetes Element bis einschließlich ancestor explizit ausgeblendet wurde.
Diese Funktion gibt weiterhin „true“ zurück, wenn das Widget von anderen Fenstern auf dem Bildschirm verdeckt wird, aber physisch sichtbar wäre, wenn dieses oder jene Fenster verschoben würden.
isVisibleTo(0) ist identisch mit isVisible().
Siehe auch show(), hide() und isVisible().
bool QWidget::isWindow() const
Gibt „ true “ zurück, wenn das Widget ein eigenständiges Fenster ist, andernfalls „ false “.
Ein Fenster ist ein Widget, das optisch keinem anderen Widget untergeordnet ist und in der Regel über einen Rahmen und ein „ window title “ verfügt.
Ein Fenster kann ein „ parent widget “ haben. Es wird dann mit seinem übergeordneten Element gruppiert und gelöscht, wenn dieses gelöscht wird, minimiert, wenn dieses minimiert wird, usw. Sofern vom Fenstermanager unterstützt, verfügt es außerdem über einen gemeinsamen Taskleisten-Eintrag mit seinem übergeordneten Element.
QDialog Und „ QMainWindow “-Widgets sind standardmäßig Fenster, selbst wenn im Konstruktor ein übergeordnetes Widget angegeben wird. Dieses Verhalten wird durch das Flag „ Qt::Window “ festgelegt.
Siehe auch „ window()“, „ isModal()“ und „ parentWidget()“.
[virtual protected] void QWidget::keyPressEvent(QKeyEvent *event)
Dieser Ereignis-Handler für das Ereignis „ event “ kann in einer Unterklasse neu implementiert werden, um Tastendruckereignisse für das Widget zu empfangen.
Ein Widget muss zunächst ` setFocusPolicy()` aufrufen, um den Fokus anzunehmen, und den Fokus besitzen, um ein Tastendruckereignis empfangen zu können.
Wenn Sie diesen Handler neu implementieren, ist es sehr wichtig, dass Sie die Implementierung der Basisklasse aufrufen, falls Sie die Taste nicht weiterverarbeiten.
Die Standardimplementierung schließt Popup-Widgets, wenn der Benutzer die Tastenkombination für ` QKeySequence::Cancel ` drückt (typischerweise die Escape-Taste). Andernfalls wird das Ereignis ignoriert, sodass das übergeordnete Widget es interpretieren kann.
Beachten Sie, dass „ QKeyEvent “ mit `isAccepted()` == `true` beginnt; Sie müssen also ` QKeyEvent::accept()` nicht aufrufen – rufen Sie lediglich die Implementierung der Basisklasse nicht auf, wenn Sie auf die Taste reagieren.
Siehe auch „ keyReleaseEvent()“, „ setFocusPolicy()“, „ focusInEvent()“, „ focusOutEvent()“, „ event()“ und „ QKeyEvent “.
[virtual protected] void QWidget::keyReleaseEvent(QKeyEvent *event)
Dieser Ereignisbehandler für das Ereignis „ event “ kann in einer Unterklasse neu implementiert werden, um Tastenloslass-Ereignisse für das Widget zu empfangen.
Ein Widget muss zunächst ` accept focus ` und anschließend ` have focus ` aufrufen, um ein Tastenloslass-Ereignis zu empfangen.
Wenn Sie diesen Handler neu implementieren, ist es sehr wichtig, dass Sie die Implementierung der Basisklasse aufrufen, falls Sie die Taste nicht weiterverarbeiten.
Die Standardimplementierung ignoriert das Ereignis, damit das übergeordnete Widget es interpretieren kann.
Beachten Sie, dass ` QKeyEvent ` mit `isAccepted() == true` beginnt; Sie müssen also ` QKeyEvent::accept()` nicht aufrufen – rufen Sie die Implementierung der Basisklasse lediglich nicht auf, wenn Sie auf die Taste reagieren.
Siehe auch „ keyPressEvent()“, „ QEvent::ignore()“, „ setFocusPolicy()“, „ focusInEvent()“, „ focusOutEvent()“, „ event()“ und „ QKeyEvent “.
[static] QWidget *QWidget::keyboardGrabber()
Gibt das Widget zurück, das derzeit die Tastatureingabe erfasst.
Wenn derzeit kein Widget in dieser Anwendung die Tastatureingabe erfasst, wird ` nullptr ` zurückgegeben.
Siehe auch „ grabMouse()“ und „ mouseGrabber()“.
QLayout *QWidget::layout() const
Gibt den auf diesem Widget installierten Layout-Manager zurück oder „ nullptr “, falls kein Layout-Manager installiert ist.
Der Layout-Manager legt die Geometrie der untergeordneten Elemente des Widgets fest, die dem Layout hinzugefügt wurden.
Siehe auch „ setLayout()“, „ sizePolicy()“ und „Layout-Verwaltung“.
[virtual protected] void QWidget::leaveEvent(QEvent *event)
Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um „Widget-Leave“-Ereignisse zu empfangen, die über den Parameter „ event “ übergeben werden.
Ein „Leave“-Ereignis wird an das Widget gesendet, wenn der Mauszeiger das Widget verlässt.
Siehe auch „ enterEvent()“, „ mouseMoveEvent()“ und „ event()“.
[slot] void QWidget::lower()
Verschiebt das Widget an das Ende des Stapels des übergeordneten Widgets.
Nach diesem Aufruf befindet sich das Widget visuell hinter allen überlappenden Geschwister-Widgets (und wird daher von diesen verdeckt).
Siehe auch „ raise()“ und „ stackUnder()“.
[since 6.0] QPointF QWidget::mapFrom(const QWidget *parent, const QPointF &pos) const
Wandelt die Widget-Koordinaten pos vom Koordinatensystem von parent in das Koordinatensystem dieses Widgets um. Die parent darf nicht nullptr sein und muss ein übergeordnetes Element des aufrufenden Widgets sein.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch mapTo(), mapFromParent(), mapFromGlobal() und underMouse().
QPoint QWidget::mapFrom(const QWidget *parent, const QPoint &pos) const
Dies ist eine überladene Funktion.
[since 6.0] QPointF QWidget::mapFromGlobal(const QPointF &pos) const
Konvertiert die globalen Bildschirmkoordinaten pos in Widget-Koordinaten.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch mapToGlobal(), mapFrom() und mapFromParent().
QPoint QWidget::mapFromGlobal(const QPoint &pos) const
Dies ist eine überladene Funktion.
[since 6.0] QPointF QWidget::mapFromParent(const QPointF &pos) const
Konvertiert die Koordinaten des übergeordneten Widgets pos in Widget-Koordinaten.
Entspricht ` mapFromGlobal()` , wenn das Widget kein übergeordnetes Widget hat.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch „ mapToParent()“, „ mapFrom()“, „ mapFromGlobal()“ und „ underMouse()“.
QPoint QWidget::mapFromParent(const QPoint &pos) const
Dies ist eine überladene Funktion.
[since 6.0] QPointF QWidget::mapTo(const QWidget *parent, const QPointF &pos) const
Konvertiert das Koordinaten pos des Widgets in das Koordinatensystem von parent. Die parent darf nicht nullptr sein und muss ein übergeordnetes Element des aufrufenden Widgets sein.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch mapFrom(), mapToParent(), mapToGlobal() und underMouse().
QPoint QWidget::mapTo(const QWidget *parent, const QPoint &pos) const
Dies ist eine überladene Funktion.
[since 6.0] QPointF QWidget::mapToGlobal(const QPointF &pos) const
Wandelt die Widget-Koordinaten pos in globale Bildschirmkoordinaten um. Beispielsweise würde mapToGlobal(QPointF(0,0)) die globalen Koordinaten des Pixels in der oberen linken Ecke des Widgets liefern.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch ` mapFromGlobal()`, ` mapTo()` und ` mapToParent()`.
QPoint QWidget::mapToGlobal(const QPoint &pos) const
Dies ist eine überladene Funktion.
[since 6.0] QPointF QWidget::mapToParent(const QPointF &pos) const
Konvertiert die Koordinaten des Widgets pos in eine Koordinate im übergeordneten Widget.
Entspricht ` mapToGlobal()` , wenn das Widget kein übergeordnetes Widget hat.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch „ mapFromParent()“, „ mapTo()“, „ mapToGlobal()“ und „ underMouse()“.
QPoint QWidget::mapToParent(const QPoint &pos) const
Dies ist eine überladene Funktion.
QRegion QWidget::mask() const
Gibt die derzeit für ein Widget festgelegte Maske zurück. Ist keine Maske festgelegt, ist der Rückgabewert ein leerer Bereich.
Siehe auch setMask(), clearMask() und QRegion::isEmpty().
[override virtual protected] int QWidget::metric(QPaintDevice::PaintDeviceMetric m) const
Implementiert: ` QPaintDevice::metric` (QPaintDevice::PaintDeviceMetric metric) const.
Interne Implementierung der virtuellen Funktion ` QPaintDevice::metric()`.
m ist die abzurufende Metrik.
[virtual protected] void QWidget::mouseDoubleClickEvent(QMouseEvent *event)
Dieser Ereignis-Handler für das Ereignis „ event “ kann in einer Unterklasse neu implementiert werden, um Doppelklick-Ereignisse für das Widget zu empfangen.
Die Standardimplementierung ruft ` mousePressEvent()` auf.
Hinweis: Das Widget empfängt neben dem Doppelklick-Ereignis auch Mausdruck- und Mausloslass-Ereignisse. Wenn ein anderes Widget, das dieses Widget überlappt, als Reaktion auf Druck- oder Loslass-Ereignisse verschwindet, empfängt dieses Widget nur das Doppelklick-Ereignis. Es obliegt dem Entwickler, sicherzustellen, dass die Anwendung diese Ereignisse korrekt interpretiert.
Siehe auch mousePressEvent(), mouseReleaseEvent(), mouseMoveEvent(), event() und QMouseEvent.
[static] QWidget *QWidget::mouseGrabber()
Gibt das Widget zurück, das derzeit die Mauseingabe verarbeitet.
Wenn derzeit kein Widget in dieser Anwendung die Maus gesteuert, wird ` nullptr ` zurückgegeben.
Siehe auch „ grabMouse()“ und „ keyboardGrabber()“.
[virtual protected] void QWidget::mouseMoveEvent(QMouseEvent *event)
Dieser Ereignis-Handler für das Ereignis „ event “ kann in einer Unterklasse neu implementiert werden, um Mausbewegungsereignisse für das Widget zu empfangen.
Ist die Mausverfolgung deaktiviert, treten Mausbewegungsereignisse nur auf, wenn während der Mausbewegung eine Maustaste gedrückt wird. Ist die Mausverfolgung aktiviert, treten Mausbewegungsereignisse auch dann auf, wenn keine Maustaste gedrückt ist.
QMouseEvent::position() gibt die Position des Mauszeigers relativ zu diesem Widget zurück. Bei Klick- und Loslassereignissen entspricht die Position in der Regel der Position des letzten Mausbewegungsereignisses, kann jedoch abweichen, wenn die Hand des Benutzers zittert. Dies ist eine Eigenschaft des zugrunde liegenden Fenstersystems, nicht von Qt.
Wenn Sie einen Tooltip sofort anzeigen möchten, während die Maus bewegt wird (z. B. um die Mauskoordinaten mit ` QMouseEvent::position()` abzurufen und sie als Tooltip anzuzeigen), müssen Sie zunächst das Maus-Tracking wie oben beschrieben aktivieren. Um sicherzustellen, dass der Tooltip sofort aktualisiert wird, müssen Sie dann in Ihrer Implementierung von `mouseMoveEvent()` ` QToolTip::showText()` anstelle von ` setToolTip()` aufrufen.
Siehe auch „ setMouseTracking()“, „ mousePressEvent()“, „ mouseReleaseEvent()“, „ mouseDoubleClickEvent()“, „ event()“, „ QMouseEvent “ und das Scribble-Beispiel.
[virtual protected] void QWidget::mousePressEvent(QMouseEvent *event)
Dieser Ereignis-Handler für das Ereignis „ event “ kann in einer Unterklasse neu implementiert werden, um Mausklick-Ereignisse für das Widget zu empfangen.
Wenn Sie in der Funktion `mousePressEvent()` neue Widgets erstellen, landet die Funktion ` mouseReleaseEvent()` möglicherweise nicht dort, wo Sie es erwarten – abhängig vom zugrunde liegenden Fenstersystem (oder X11-Fenstermanager), der Position der Widgets und möglicherweise weiteren Faktoren.
Die Standardimplementierung sorgt dafür, dass Popup-Widgets geschlossen werden, wenn Sie außerhalb des Fensters klicken. Bei anderen Widget-Typen führt sie keine Aktion aus.
Siehe auch ` mouseReleaseEvent()`, ` mouseDoubleClickEvent()`, ` mouseMoveEvent()`, ` event()`, ` QMouseEvent` und das Scribble-Beispiel.
[virtual protected] void QWidget::mouseReleaseEvent(QMouseEvent *event)
Dieser Ereignis-Handler für das Ereignis „ event “ kann in einer Unterklasse neu implementiert werden, um Maus-Loslass-Ereignisse für das Widget zu empfangen.
Siehe auch „ mousePressEvent()“, „ mouseDoubleClickEvent()“, „ mouseMoveEvent()“, „ event()“, „ QMouseEvent “ und „Scribble-Beispiel“.
void QWidget::move(int x, int y)
Dies entspricht der Funktion „move(QPoint(x, y))“.
Hinweis: Setter -Funktion für die Eigenschaft pos.
Dies ist eine überladene Funktion.
[virtual protected] void QWidget::moveEvent(QMoveEvent *event)
Dieser Ereignishandler kann in einer Unterklasse neu implementiert werden, um Widget-Verschiebungsereignisse zu empfangen, die über den Parameter ` event ` übergeben werden. Wenn das Widget dieses Ereignis empfängt, befindet es sich bereits an der neuen Position.
Auf die alte Position kann über ` QMoveEvent::oldPos()` zugegriffen werden.
Siehe auch „ resizeEvent()“, „ event()“, „ move()“ und „ QMoveEvent “.
[virtual protected] bool QWidget::nativeEvent(const QByteArray &eventType, void *message, qintptr *result)
Dieser spezielle Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um native Plattformereignisse zu empfangen, die durch „ eventType “ identifiziert und über den Parameter „ message “ übergeben werden.
Wenn Sie in Ihrer Neuimplementierung dieser Funktion verhindern möchten, dass das Ereignis von Qt verarbeitet wird, geben Sie „true“ zurück und setzen Sie „ result “. Der Parameter „ result “ ist nur unter Windows von Bedeutung. Wenn Sie „false“ zurückgeben, wird dieses native Ereignis an Qt zurückgegeben, das das Ereignis in ein Qt-Ereignis umwandelt und an das Widget sendet.
Hinweis: Ereignisse werden nur dann an diesen Ereignis-Handler übermittelt, wenn das Widget über ein natives Fenster-Handle verfügt.
Hinweis: Diese Funktion ersetzt die Ereignisfilterfunktionen `x11Event()`, `winEvent()` und `macEvent()` aus Qt 4.
| Plattform | Ereignistyp-Kennung | Nachrichtentyp | Ergebnistyp |
|---|---|---|---|
| Windows | „windows_generic_MSG“ | MSG * | LRESULT |
| macOS | „NSEvent“ | NSEvent * | |
| XCB | „xcb_generic_event_t“ | xcb_generic_event_t * |
Siehe auch QAbstractNativeEventFilter.
QWidget *QWidget::nativeParentWidget() const
Gibt das native übergeordnete Widget für dieses Widget zurück, d. h. das nächste übergeordnete Widget, das über eine System-ID verfügt, oder nullptr, falls es kein natives übergeordnetes Widget gibt.
Siehe auch effectiveWinId().
QWidget *QWidget::nextInFocusChain() const
Gibt das nächste Widget in der Fokus-Kette dieses Widgets zurück.
Siehe auch ` previousInFocusChain()`.
void QWidget::overrideWindowFlags(Qt::WindowFlags flags)
Setzt die Fensterflags für das Widget auf „ flags “, ohne das Fenstersystem darüber zu informieren.
Warnung: RufenSie diese Funktionnur auf, wenn Sie genau wissen, was Sie tun.
Siehe auch ` setWindowFlags()`.
[override virtual] QPaintEngine *QWidget::paintEngine() const
Implementiert neu: ` QPaintDevice::paintEngine()` const.
Gibt die Zeichen-Engine des Widgets zurück.
Beachten Sie, dass diese Funktion nicht explizit vom Benutzer aufgerufen werden sollte, da sie ausschließlich zur Neuimplementierung vorgesehen ist. Die Funktion wird intern von Qt aufgerufen, und die Standardimplementierung gibt möglicherweise nicht immer einen gültigen Zeiger zurück.
[virtual protected] void QWidget::paintEvent(QPaintEvent *event)
Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um die in ` event` übergebenen Paint-Ereignisse zu empfangen.
Ein Zeichnungsereignis ist eine Anforderung, ein Widget ganz oder teilweise neu zu zeichnen. Dies kann aus einem der folgenden Gründe geschehen:
- repaint() oder update() wurde aufgerufen,
- das Widget war verdeckt und ist nun wieder sichtbar, oder
- aus vielen anderen Gründen.
Viele Widgets können auf Anfrage einfach ihre gesamte Oberfläche neu zeichnen, doch einige langsame Widgets müssen die Leistung optimieren, indem sie nur den angeforderten Bereich zeichnen: ` QPaintEvent::region()`. Diese Geschwindigkeitsoptimierung ändert nichts am Ergebnis, da das Zeichnen während der Ereignisverarbeitung auf diesen Bereich beschränkt wird. ` QListView ` und ` QTableView ` tun dies beispielsweise.
Qt versucht außerdem, das Zeichnen zu beschleunigen, indem mehrere Zeichnungsereignisse zu einem zusammengefasst werden. Wenn update() mehrmals aufgerufen wird oder das Fenstersystem mehrere Zeichnungsereignisse sendet, fasst Qt diese Ereignisse zu einem einzigen Ereignis mit einem größeren Bereich zusammen (siehe QRegion::united()). Die Funktion repaint() lässt diese Optimierung nicht zu, daher empfehlen wir, wann immer möglich update() zu verwenden.
Wenn das Zeichenereignis eintritt, wurde der Aktualisierungsbereich normalerweise bereits gelöscht, sodass Sie auf den Hintergrund des Widgets zeichnen.
Der Hintergrund kann mit „ setBackgroundRole()“ und „ setPalette()“ festgelegt werden.
Seit Qt 4.0 führt „ QWidget “ automatisch ein Double-Buffering beim Zeichnen durch, sodass es nicht notwendig ist, Code für das Double-Buffering in „paintEvent()“ zu schreiben, um Flackern zu vermeiden.
Hinweis: Generell sollten Sie davon absehen, update() oder repaint() innerhalb von paintEvent() aufzurufen. Der Aufruf von update() oder repaint() für untergeordnete Elemente innerhalb von paintEvent() führt beispielsweise zu undefiniertem Verhalten; das untergeordnete Element erhält möglicherweise ein Malereignis, möglicherweise aber auch nicht.
Warnung: Wenn Sie eine benutzerdefinierte Zeichen-Engine ohne den Backingstore von Qt verwenden, muss Qt::WA_PaintOnScreen gesetzt sein. Andernfalls wird QWidget::paintEngine() niemals aufgerufen; stattdessen wird der Backingstore verwendet.
Siehe auch ` event()`, ` repaint()`, ` update()`, ` QPainter`, ` QPixmap`, ` QPaintEvent` und „Analog Clock“.
QWidget *QWidget::parentWidget() const
Gibt das übergeordnete Widget dieses Widgets zurück oder „ nullptr “, falls es kein übergeordnetes Widget hat.
QWidget *QWidget::previousInFocusChain() const
Die Funktion „previousInFocusChain“ gibt das vorherige Widget in der Fokus-Kette dieses Widgets zurück.
Siehe auch „ nextInFocusChain()“.
[slot] void QWidget::raise()
Bringt dieses Widget an den Anfang des Stapels des übergeordneten Widgets.
Nach diesem Aufruf befindet sich das Widget optisch vor allen überlappenden Geschwister-Widgets.
Hinweis: Bei Verwendung von ` activateWindow()` können Sie diese Funktion aufrufen, um sicherzustellen, dass das Fenster ganz oben im Stapel liegt.
Siehe auch „ lower()“ und „ stackUnder()“.
void QWidget::releaseKeyboard()
Löst die Tastatursperre auf.
Siehe auch grabKeyboard(), grabMouse() und releaseMouse().
void QWidget::releaseMouse()
Löst die Mausbindung.
Siehe auch grabMouse(), grabKeyboard() und releaseKeyboard().
void QWidget::releaseShortcut(int id)
Entfernt die Tastenkombination mit dem angegebenen „ id “ aus dem Tastenkombinationensystem von Qt. Das Widget erhält keine „ QEvent::Shortcut “-Ereignisse mehr für die Tastenfolge der Tastenkombination (es sei denn, es verfügt über andere Tastenkombinationen mit derselben Tastenfolge).
Warnung: Normalerweise solltenSie diese Funktion nicht verwenden müssen, da das Tastenkürzelsystem von Qt Tastenkürzel automatisch entfernt, wenn ihr übergeordnetes Widget zerstört wird. Es empfiehlt sich, „ QAction “ oder „ QShortcut “ zur Verwaltung von Tastenkürzeln zu verwenden, da diese einfacher zu handhaben sind als diese Low-Level-Funktion. Beachten Sie außerdem, dass dies ein rechenintensiver Vorgang ist.
Siehe auch grabShortcut() und setShortcutEnabled().
void QWidget::removeAction(QAction *action)
Entfernt die Aktion „ action “ aus der Aktionsliste dieses Widgets.
Siehe auch „ insertAction()“ und „ actions()“.
void QWidget::render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren))
Rendert die „ sourceRegion “ dieses Widgets in die „ target “, wobei „ renderFlags “ zur Bestimmung der Darstellungsweise verwendet wird. Das Rendern beginnt bei „ targetOffset “ in der „ target “. Beispiel:
QPixmap pixmap(widget->size());
widget->render(&pixmap);Wenn „ sourceRegion “ ein null-Bereich ist, verwendet diese Funktion „ QWidget::rect()“ als Bereich, d. h. das gesamte Widget.
Stellen Sie sicher, dass Sie vor dem Rendern QPainter::end() für den aktiven Painter des target -Geräts (falls vorhanden) aufrufen. Beispiel:
QPainter painter(this);
...
painter.end();
myWidget->render(this);Hinweis: Um den Inhalt eines ` QOpenGLWidget` abzurufen, verwenden Sie stattdessen ` QOpenGLWidget::grabFramebuffer()`.
void QWidget::render(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags renderFlags = RenderFlags(DrawWindowBackground | DrawChildren))
Rendert das Widget in die „ QPainter::device “ des „ painter “ ().
Beim Rendern werden die auf das „ painter “ angewendeten Transformationen und Einstellungen verwendet.
Hinweis: Das „ painter “ muss aktiv sein. Unter macOS wird das Widget in ein „ QPixmap “ gerendert und anschließend von der Funktion „ painter “ gezeichnet.
Dies ist eine überladene Funktion.
Siehe auch QPainter::device().
[slot] void QWidget::repaint()
Zeichnet das Widget direkt neu, indem sofort ` paintEvent()` aufgerufen wird, es sei denn, Aktualisierungen sind deaktiviert oder das Widget ist ausgeblendet.
Wir empfehlen, `repaint()` nur zu verwenden, wenn eine sofortige Neuzeichnung erforderlich ist, beispielsweise während einer Animation. In den meisten Fällen ist ` update()` die bessere Wahl, da Qt dadurch die Geschwindigkeit optimieren und Flackern minimieren kann.
Warnung: Wenn Sie `repaint()` in einer Funktion aufrufen, die selbst von ` paintEvent()` aufgerufen werden könnte, kann es zu einer unendlichen Rekursion kommen. Die Funktion ` update()` verursacht niemals eine Rekursion.
Hinweis: Dieser Slot ist überladen. So stellen Sie eine Verbindung zu diesem Slot her:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
widget, qOverload<>(&QWidget::repaint));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
widget, [receiver = widget]() { receiver->repaint(); });Siehe auch „ update()“, „ paintEvent()“ und „ setUpdatesEnabled()“.
void QWidget::repaint(const QRect &rect)
Diese Version zeichnet ein Rechteck rect innerhalb des Widgets neu.
Dies ist eine überladene Funktion.
void QWidget::repaint(const QRegion &rgn)
Diese Version zeichnet einen Bereich rgn innerhalb des Widgets neu.
Dies ist eine überladene Funktion.
void QWidget::repaint(int x, int y, int w, int h)
Diese Version zeichnet ein Rechteck (x, y, w, h) innerhalb des Widgets neu.
Ist w negativ, wird es durch width() - x ersetzt, und ist h negativ, wird es durch height() - y ersetzt.
Dies ist eine überladene Funktion.
void QWidget::resize(int w, int h)
Dies entspricht resize(QSize(w, h)).
Hinweis: Setter -Funktion für die Eigenschaft size.
Dies ist eine überladene Funktion.
[virtual protected] void QWidget::resizeEvent(QResizeEvent *event)
Dieser Ereignis-Handler kann in einer Unterklasse neu implementiert werden, um Ereignisse zur Größenänderung des Widgets zu empfangen, die über den Parameter „ event “ übergeben werden. Wenn „resizeEvent()“ aufgerufen wird, verfügt das Widget bereits über seine neue Geometrie. Die alte Größe kann über „ QResizeEvent::oldSize()“ abgerufen werden.
Das Widget wird unmittelbar nach der Verarbeitung des Größenänderungsereignisses gelöscht und erhält ein Zeichnungsereignis. Innerhalb dieses Handlers muss (und sollte) keine Zeichnung erfolgen.
Siehe auch „ moveEvent()“, „ event()“, „ resize()“, „ QResizeEvent “, „ paintEvent()“ und das Scribble-Beispiel.
bool QWidget::restoreGeometry(const QByteArray &geometry)
Stellt die Geometrie und den Zustand der Widgets der obersten Ebene wieder her, die im Byte-Array „ geometry “ gespeichert sind. Gibt bei Erfolg „ true “ zurück; andernfalls wird „ false “ zurückgegeben.
Befindet sich die wiederhergestellte Geometrie außerhalb des Bildschirms, wird sie so angepasst, dass sie innerhalb der verfügbaren Bildschirmgeometrie liegt.
Um die mit ` QSettings` gespeicherte Geometrie wiederherzustellen, können Sie folgenden Code verwenden:
QSettings settings("MyCompany", "MyApp");
myWidget->restoreGeometry(settings.value("myWidget/geometry").toByteArray());Einen Überblick über Geometrieprobleme bei Fenstern finden Sie in der Dokumentation zur Fenstergeometrie.
Verwenden Sie „ QMainWindow::restoreState()“, um die Geometrie sowie den Zustand von Symbolleisten und Andock-Widgets wiederherzustellen.
Siehe auch „ saveGeometry()“, „ QSettings “, „ QMainWindow::saveState()“ und „ QMainWindow::restoreState()“.
QByteArray QWidget::saveGeometry() const
Speichert die aktuelle Geometrie und den aktuellen Zustand von Widgets der obersten Ebene.
Um die Geometrie beim Schließen des Fensters zu speichern, können Sie ein Schließereignis wie folgt implementieren:
void MyWidget::closeEvent(QCloseEvent *event)
{
QSettings settings("MyCompany", "MyApp");
settings.setValue("geometry", saveGeometry());
QWidget::closeEvent(event);
}Einen Überblick über Geometrieprobleme bei Fenstern finden Sie in der Dokumentation zur Fenstergeometrie.
Verwenden Sie ` QMainWindow::saveState()` (), um die Geometrie und den Zustand von Symbolleisten und Dock-Widgets zu speichern.
Siehe auch ` restoreGeometry()`, ` QMainWindow::saveState()` und ` QMainWindow::restoreState()`.
QScreen *QWidget::screen() const
Gibt den Bildschirm zurück, auf dem sich das Widget befindet.
Siehe auch „ setScreen()“ und „ windowHandle()“.
void QWidget::scroll(int dx, int dy)
Scrollt das Widget einschließlich seiner untergeordneten Elemente um dx Pixel nach rechts und um dy nach unten. Sowohl dx als auch dy können negative Werte annehmen.
Nach dem Scrollen erhalten die Widgets Zeichnungsereignisse für die Bereiche, die neu gezeichnet werden müssen. Bei Widgets, die Qt als undurchsichtig erkennt, sind dies nur die neu sichtbaren Teile. Wenn beispielsweise ein undurchsichtiges Widget um 8 Pixel nach links gescrollt wird, muss nur ein 8 Pixel breiter Streifen am rechten Rand aktualisiert werden.
Da Widgets standardmäßig den Inhalt ihrer übergeordneten Elemente weitergeben, müssen Sie die Eigenschaft „ autoFillBackground “ setzen oder mit ` setAttribute()` das Attribut „ Qt::WA_OpaquePaintEvent “ festlegen, um ein Widget undurchsichtig zu machen.
Bei Widgets, die die Inhaltsweitergabe nutzen, führt ein Bildlauf zu einer Aktualisierung des gesamten Bildlaufbereichs.
Siehe auch „ Transparency and Double Buffering “.
void QWidget::scroll(int dx, int dy, const QRect &r)
Diese Version scrollt nur „ r “ und verschiebt die untergeordneten Elemente des Widgets nicht.
Ist „ r “ leer oder ungültig, ist das Ergebnis undefiniert.
Dies ist eine überladene Funktion.
Siehe auch QScrollArea.
void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on = true)
Setzt das Attribut „ attribute “ für dieses Widget, wenn „ on “ auf „true“ gesetzt ist; andernfalls wird das Attribut gelöscht.
Siehe auch „ testAttribute()“.
void QWidget::setBackgroundRole(QPalette::ColorRole role)
Legt die Hintergrundrolle des Widgets auf „ role “ fest.
Die Hintergrundrolle definiert den Pinsel aus dem „ palette “ des Widgets, der zum Rendern des Hintergrunds verwendet wird.
Wenn „ role “ auf „ QPalette::NoRole “ gesetzt ist, übernimmt das Widget die Hintergrundrolle seines übergeordneten Widgets.
Beachten Sie, dass Stile beliebige Farben aus der Palette auswählen können. Sie können die Palette anpassen oder ein Stylesheet festlegen, wenn Sie mit `setBackgroundRole()` nicht das gewünschte Ergebnis erzielen.
Siehe auch „ backgroundRole()“ und „ foregroundRole()“.
void QWidget::setBaseSize(int basew, int baseh)
Dies entspricht setBaseSize(QSize(basew, baseh)). Legt die Grundgröße des Widgets auf die Breite basew und die Höhe baseh fest.
Hinweis: Setter -Funktion für die Eigenschaft ` baseSize`.
Dies ist eine überladene Funktion.
Siehe auch baseSize().
void QWidget::setContentsMargins(int left, int top, int right, int bottom)
Legt die Ränder um den Inhalt des Widgets mit den Größen left, top, right und bottom fest. Die Ränder werden vom Layout-System verwendet und können von Unterklassen genutzt werden, um den zu zeichnenden Bereich festzulegen (z. B. unter Ausschluss des Rahmens).
Eine Änderung der Ränder löst ein ` resizeEvent()` aus.
Siehe auch „ contentsRect()“ und „ contentsMargins()“.
void QWidget::setContentsMargins(const QMargins &margins)
Die Funktion `setContentsMargins` legt die Ränder um den Inhalt des Widgets fest.
Legt die Ränder um den Inhalt des Widgets so fest, dass ihre Größe durch ` margins` bestimmt wird. Die Ränder werden vom Layout-System verwendet und können von Unterklassen genutzt werden, um den zu zeichnenden Bereich festzulegen (z. B. unter Ausschluss des Rahmens).
Das Ändern der Ränder löst ein ` resizeEvent()` aus.
Dies ist eine überladene Funktion.
Siehe auch „ contentsRect()“ und „ contentsMargins()“.
[slot] void QWidget::setDisabled(bool disable)
Deaktiviert Eingabeereignisse für Widgets, wenn „ disable “ auf „true“ gesetzt ist; andernfalls werden Eingabeereignisse aktiviert.
Weitere Informationen finden Sie in der Dokumentation zu „ enabled “.
Siehe auch „ isEnabledTo()“, „ QKeyEvent “, „ QMouseEvent “ und „ changeEvent()“.
void QWidget::setFixedHeight(int h)
Setzt sowohl die minimale als auch die maximale Höhe des Widgets auf „ h “, ohne die Breiten zu ändern. Wird aus praktischen Gründen bereitgestellt.
Siehe auch sizeHint(), minimumSize(), maximumSize() und setFixedSize().
void QWidget::setFixedSize(const QSize &s)
Legt sowohl die Mindest- als auch die Höchstgröße des Widgets auf s fest und verhindert so, dass es jemals größer oder kleiner wird.
Dadurch werden die durch „ QLayout “ festgelegten Standardgrößenbeschränkungen überschrieben.
Um die Größenbeschränkungen aufzuheben, setzen Sie die Größe auf ` QWIDGETSIZE_MAX`.
Alternativ können Sie, wenn das Widget eine feste Größe basierend auf seinem Inhalt haben soll, „ QLayout::setSizeConstraint “ (QLayout::SetFixedSize) aufrufen;
Siehe auch maximumSize und minimumSize.
void QWidget::setFixedSize(int w, int h)
Legt die Breite des Widgets auf w und die Höhe auf h fest.
Dies ist eine überladene Funktion.
void QWidget::setFixedWidth(int w)
Setzt sowohl die minimale als auch die maximale Breite des Widgets auf w, ohne die Höhen zu ändern. Wird aus praktischen Gründen bereitgestellt.
Siehe auch „ sizeHint()“, „ minimumSize()“, „ maximumSize()“ und „ setFixedSize()“.
void QWidget::setFocus(Qt::FocusReason reason)
Weist diesem Widget (oder dessen Fokus-Proxy) den Tastatureingabefokus zu, wenn dieses Widget oder eines seiner übergeordneten Widgets das „ active window “ ist. Das Argument „ reason “ wird an jedes von dieser Funktion gesendete Fokusereignis übergeben und dient dazu, zu erklären, warum das Widget den Fokus erhalten hat. Ist das Fenster nicht aktiv, erhält das Widget den Fokus, sobald das Fenster aktiv wird.
Zunächst wird ein „Focus-Change“-Ereignis an das Fokus-Widget (sofern vorhanden) gesendet, um ihm mitzuteilen, dass es den Fokus verlieren wird. Anschließend wird der Fokus gewechselt: Ein „Focus-Out“-Ereignis wird an das bisherige Fokus-Element gesendet und ein „Focus-In“-Ereignis an das neue Element, um diesem mitzuteilen, dass es gerade den Fokus erhalten hat. (Es geschieht nichts, wenn das „Focus-In“- und das „Focus-Out“-Widget identisch sind.)
Hinweis: Auf eingebetteten Plattformen bewirkt `setFocus()` nicht, dass ein Eingabefeld von der Eingabemethode geöffnet wird. Wenn Sie dies wünschen, müssen Sie selbst ein „ QEvent::RequestSoftwareInputPanel “-Ereignis an das Widget senden.
setFocus() vergibt den Fokus an ein Widget unabhängig von dessen Fokusrichtlinie, hebt jedoch keine Tastatursperre auf (siehe grabKeyboard()).
Beachten Sie, dass ein ausgeblendetes Widget den Fokus erst annimmt, wenn es angezeigt wird.
Warnung: Wenn Sie `setFocus()` in einer Funktion aufrufen, die selbst von ` focusOutEvent()` oder ` focusInEvent()` aufgerufen werden kann, kann es zu einer unendlichen Rekursion kommen.
Siehe auch hasFocus(), clearFocus(), focusInEvent(), focusOutEvent(), setFocusPolicy(), focusWidget(), QApplication::focusWidget(), grabKeyboard(), grabMouse(), Tastaturfokus in Widgets und QEvent::RequestSoftwareInputPanel.
[slot] void QWidget::setFocus()
Weist diesem Widget (oder dessen Fokus-Proxy) den Tastatureingabefokus zu, wenn dieses Widget oder eines seiner übergeordneten Widgets die „ active window “ ist.
Hinweis: Dieser Slot ist überladen. So stellen Sie eine Verbindung zu diesem Slot her:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
widget, qOverload<>(&QWidget::setFocus));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
widget, [receiver = widget]() { receiver->setFocus(); });void QWidget::setFocusProxy(QWidget *w)
Setzt den Fokus-Proxy des Widgets auf das Widget „ w “. Wenn „ w “ auf „ nullptr “ gesetzt ist, setzt die Funktion dieses Widget so zurück, dass es keinen Fokus-Proxy mehr hat.
Manche Widgets können zwar „den Fokus haben“, erstellen jedoch ein untergeordnetes Widget, wie z. B. QLineEdit, um den Fokus tatsächlich zu verwalten. In diesem Fall kann das Widget das Zeileneingabefeld als seinen Fokus-Proxy festlegen.
setFocusProxy() legt das Widget fest, das tatsächlich den Fokus erhält, wenn „dieses Widget“ den Fokus erhält. Wenn ein Fokus-Proxy vorhanden ist, wirken sich setFocus() und hasFocus() auf den Fokus-Proxy aus. Ist „dieses Widget“ das Fokus-Widget, verlagert setFocusProxy() den Fokus auf den neuen Fokus-Proxy.
Siehe auch ` focusProxy()`.
void QWidget::setForegroundRole(QPalette::ColorRole role)
Legt die Vordergrundfarbe des Widgets auf „ role “ fest.
Die Vordergrundrolle definiert die Farbe aus der „ palette “ des Widgets, die zum Zeichnen des Vordergrunds verwendet wird.
Wenn „ role “ auf „ QPalette::NoRole “ gesetzt ist, verwendet das Widget eine Vordergrundrolle, die sich von der Hintergrundrolle abhebt.
Beachten Sie, dass Stile beliebige Farben aus der Palette auswählen können. Sie können die Palette anpassen oder ein Stylesheet festlegen, wenn Sie mit `setForegroundRole()` nicht das gewünschte Ergebnis erzielen.
Siehe auch „ foregroundRole()“ und „ backgroundRole()“.
void QWidget::setGeometry(int x, int y, int w, int h)
Dies entspricht setGeometry(QRect(x, y, w, h)).
Hinweis: Setter -Funktion für die Eigenschaft ` geometry`.
Dies ist eine überladene Funktion.
Siehe auch ` geometry()`.
void QWidget::setGraphicsEffect(QGraphicsEffect *effect)
Die Funktion „setGraphicsEffect“ dient zum Festlegen des Grafikeffekts des Widgets.
Legt „ effect “ als Effekt des Widgets fest. Wenn auf diesem Widget bereits ein Effekt installiert ist, löscht „ QWidget “ den vorhandenen Effekt, bevor der neue Effekt „ effect “ installiert wird.
Wenn „ effect “ bereits als Effekt auf einem anderen Widget installiert ist, entfernt „setGraphicsEffect()“ den Effekt von diesem Widget und installiert ihn auf diesem Widget.
QWidget übernimmt die Eigentumsrechte an „ effect “.
Hinweis: Diese Funktion wendet den Effekt auf sich selbst und alle ihre untergeordneten Elemente an.
Hinweis: Grafikeffekte werden für OpenGL-basierte Widgets wie QGLWidget, QOpenGLWidget und QQuickWidget nicht unterstützt.
Siehe auch ` graphicsEffect()`.
[slot] void QWidget::setHidden(bool hidden)
Hilfsfunktion, entspricht setVisible(!hidden).
Siehe auch isHidden().
void QWidget::setLayout(QLayout *layout)
Legt den Layout-Manager für dieses Widget auf „ layout “ fest.
Wenn auf diesem Widget bereits ein Layout-Manager installiert ist, lässt „ QWidget “ die Installation eines weiteren nicht zu. Sie müssen zunächst den vorhandenen Layout-Manager (der von ` layout()` zurückgegeben wird) löschen, bevor Sie `setLayout()` mit dem neuen Layout aufrufen können.
Wenn „ layout “ der Layout-Manager eines anderen Widgets ist, ordnet „setLayout()“ das Layout neu zu und macht es zum Layout-Manager für dieses Widget.
Beispiel:
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(formWidget);
formWidget->setLayout(layout);Eine Alternative zum Aufruf dieser Funktion besteht darin, dieses Widget an den Konstruktor des Layouts zu übergeben.
Der „ QWidget “ übernimmt dann die Verantwortung für „ layout “.
Siehe auch ` layout()` und „Layout-Verwaltung“.
void QWidget::setMask(const QBitmap &bitmap)
Sorgt dafür, dass nur die Pixel des Widgets sichtbar sind, für die „ bitmap “ ein entsprechendes 1-Bit enthält. Wenn der Bereich Pixel außerhalb des „ rect()“ des Widgets umfasst, sind die Steuerelemente des Fenstersystems in diesem Bereich je nach Plattform möglicherweise sichtbar oder auch nicht.
Beachten Sie, dass dieser Effekt langsam sein kann, wenn der Bereich besonders komplex ist.
Der folgende Code zeigt, wie ein Bild mit einem Alphakanal verwendet werden kann, um eine Maske für ein Widget zu erzeugen:
QLabel topLevelLabel;
QPixmap pixmap(":/images/tux.png");
topLevelLabel.setPixmap(pixmap);
topLevelLabel.setMask(pixmap.mask());Das durch diesen Code angezeigte Label wird mithilfe des darin enthaltenen Bildes maskiert, wodurch der Eindruck entsteht, dass ein unregelmäßig geformtes Bild direkt auf den Bildschirm gezeichnet wird.
Maskierte Widgets empfangen Mausereignisse nur auf ihren sichtbaren Bereichen.
Siehe auch mask(), clearMask() und windowOpacity().
void QWidget::setMask(const QRegion ®ion)
Sorgt dafür, dass nur die Teile des Widgets sichtbar sind, die sich mit region überschneiden. Wenn der Bereich Pixel außerhalb des rect() des Widgets umfasst, sind die Steuerelemente des Fenstersystems in diesem Bereich je nach Plattform möglicherweise sichtbar oder auch nicht.
Da mit ` QRegion ` beliebig komplexe Bereiche erstellt werden können, lassen sich Widget-Masken auch für Fenster mit äußerst ungewöhnlichen Formen anpassen und ermöglichen sogar die Anzeige von Widgets mit Aussparungen. Beachten Sie, dass dieser Effekt langsam sein kann, wenn der Bereich besonders komplex ist.
Widget-Masken dienen dazu, dem Fenstersystem mitzuteilen, dass die Anwendung keine Mausereignisse für Bereiche außerhalb der Maske wünscht. Auf den meisten Systemen führen sie zudem zu grober visueller Beschneidung. Um glatte Fensterkanten zu erhalten, verwenden Sie stattdessen einen durchscheinenden Hintergrund und Anti-Aliasing, wie im Beispiel „Translucent Background“ gezeigt.
Dies ist eine überladene Funktion.
Siehe auch „ windowOpacity “.
void QWidget::setMaximumSize(int maxw, int maxh)
Diese Funktion entspricht setMaximumSize(QSize(maxw, maxh)). Legt die maximale Breite auf maxw und die maximale Höhe auf maxh fest.
Hinweis: Setter -Funktion für die Eigenschaft ` maximumSize`.
Dies ist eine überladene Funktion.
Siehe auch „ maximumSize()“.
void QWidget::setMinimumSize(int minw, int minh)
Diese Funktion entspricht setMinimumSize(QSize(minw, minh)). Legt die Mindestbreite auf minw und die Mindesthöhe auf minh fest.
Hinweis: Setter -Funktion für die Eigenschaft ` minimumSize`.
Dies ist eine überladene Funktion.
Siehe auch minimumSize().
void QWidget::setParent(QWidget *parent)
Setzt das übergeordnete Element des Widgets auf „ parent “ und setzt die Fensterflags zurück. Das Widget wird an die Position (0, 0) in seinem neuen übergeordneten Element verschoben.
Befindet sich das neue übergeordnete Widget in einem anderen Fenster, werden das Widget mit dem geänderten übergeordneten Element und seine untergeordneten Elemente am Ende der „ tab chain “ des neuen übergeordneten Widgets angehängt, und zwar in derselben internen Reihenfolge wie zuvor. Hatte eines der verschobenen Widgets den Tastaturfokus, ruft `setParent()` für dieses Widget die Methode ` clearFocus()` auf.
Befindet sich das neue übergeordnete Widget im selben Fenster wie das alte übergeordnete Widget, ändert das Festlegen des übergeordneten Widgets weder die Tabulatorreihenfolge noch den Tastaturfokus.
Ist das „neue“ übergeordnete Widget das alte übergeordnete Widget, führt diese Funktion keine Aktion aus.
Hinweis: Das Widget wird im Zuge der Änderung seines übergeordneten Widgets unsichtbar, auch wenn es zuvor sichtbar war. Sie müssen ` show()` aufrufen, um das Widget wieder sichtbar zu machen.
Warnung: Es ist sehr unwahrscheinlich, dass Sie diese Funktion jemals benötigen werden. Wenn Sie ein Widget haben, dessen Inhalt sich dynamisch ändert, ist es weitaus einfacher, ` QStackedWidget` zu verwenden.
Siehe auch ` setWindowFlags()`.
void QWidget::setParent(QWidget *parent, Qt::WindowFlags f)
Diese Funktion nimmt außerdem Widget-Flags ( f ) als Argument entgegen.
Dies ist eine überladene Funktion.
void QWidget::setScreen(QScreen *screen)
Legt den Bildschirm fest, auf dem das Widget angezeigt werden soll: screen.
Die Festlegung des Bildschirms ist nur für Fenster sinnvoll. Falls erforderlich, wird das Fenster des Widgets unter screen neu erstellt.
Hinweis: Wenn der Bildschirm Teil eines virtuellen Desktops mit mehreren Bildschirmen ist, wird das Fenster nicht automatisch auf „ screen “ verschoben. Um das Fenster relativ zum Bildschirm zu positionieren, verwende die Position „topLeft()“ des Bildschirms.
Siehe auch „ screen()“ und „ QWindow::setScreen()“.
void QWidget::setShortcutAutoRepeat(int id, bool enable = true)
Wenn „ enable “ auf „true“ gesetzt ist, ist die automatische Wiederholung des Tastenkürzels mit dem angegebenen „ id “ aktiviert; andernfalls ist sie deaktiviert.
Siehe auch „ grabShortcut()“ und „ releaseShortcut()“.
void QWidget::setShortcutEnabled(int id, bool enable = true)
Wenn „ enable “ wahr ist, ist die Tastenkombination mit der angegebenen Tastenkombination „ id “ aktiviert; andernfalls ist die Tastenkombination deaktiviert.
Warnung: Normalerweise solltenSie diese Funktion nicht verwenden müssen, da das Tastenkürzelsystem von Qt Tastenkürzel automatisch aktiviert bzw. deaktiviert, wenn Widgets ausgeblendet oder eingeblendet werden und den Fokus erhalten oder verlieren. Es empfiehlt sich, „ QAction “ oder „ QShortcut “ zur Verwaltung von Tastenkürzeln zu verwenden, da diese einfacher zu handhaben sind als diese Low-Level-Funktion.
Siehe auch „ grabShortcut “ () und „ releaseShortcut “ ().
void QWidget::setSizeIncrement(int w, int h)
Legt die Schrittweite für die x-Achse (Breite) auf w und die Schrittweite für die y-Achse (Höhe) auf h fest.
Hinweis: Setter -Funktion für die Eigenschaft sizeIncrement.
Dies ist eine überladene Funktion.
Siehe auch sizeIncrement().
void QWidget::setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)
Legt die Größenrichtlinie des Widgets auf „ horizontal “ und „ vertical “ fest, mit standardmäßiger Dehnung und ohne „height-for-width“.
Hinweis: Setter -Funktion für die Eigenschaft ` sizePolicy`.
Dies ist eine überladene Funktion.
Siehe auch ` sizePolicy()` und ` QSizePolicy::QSizePolicy()`.
void QWidget::setStyle(QStyle *style)
Setzt den GUI-Stil des Widgets auf „ style “. Die Eigentumsrechte am Stilobjekt werden nicht übertragen.
Wenn kein Stil festgelegt ist, verwendet das Widget stattdessen den Stil der Anwendung, „ QApplication::style()“.
Das Festlegen eines Stils für ein Widget hat keine Auswirkungen auf bestehende oder zukünftige untergeordnete Widgets.
Warnung: Diese Funktion ist besonders für Demonstrationszwecke nützlich, bei denen Sie die Gestaltungsmöglichkeiten von Qt zeigen möchten. In echten Anwendungen sollten Sie sie vermeiden und stattdessen einen einheitlichen GUI-Stil verwenden.
Siehe auch style(), QStyle, QApplication::style() und QApplication::setStyle().
[static] void QWidget::setTabOrder(QWidget *first, QWidget *second)
Fügt das Widget „ second “ in der Fokusreihenfolge hinter das Widget „ first “ ein.
Dadurch wird das Widget „ second “ effektiv aus seiner Fokus-Kette entfernt und hinter dem Widget „ first “ eingefügt.
Beachten Sie, dass sich die Tabulatorreihenfolge des Widgets „ second “ geändert hat und Sie eine Kette daher wie folgt anordnen sollten:
setTabOrder(a, b); // a to b
setTabOrder(b, c); // a to b to c
setTabOrder(c, d); // a to b to c to dnicht so:
// WRONG
setTabOrder(c, d); // c to d
setTabOrder(a, b); // a to b AND c to d
setTabOrder(b, c); // a to b to c, but not c to dWenn „ first “ oder „ second “ über einen Fokus-Proxy verfügt, ersetzt `setTabOrder()` diesen Proxy korrekt.
Hinweis: Seit Qt 5.10: Ein Widget, das ein untergeordnetes Element als Fokus-Proxy hat, wird als zusammengesetztes Widget interpretiert. Beim Festlegen der Tabulatorreihenfolge zwischen einem oder zwei zusammengesetzten Widgets bleibt die lokale Tabulatorreihenfolge innerhalb jedes einzelnen Widgets erhalten. Das bedeutet, dass, wenn beide Widgets zusammengesetzte Widgets sind, die resultierende Tab-Reihenfolge vom letzten Kind innerhalb von first zum ersten Kind innerhalb von second verläuft.
Siehe auch „ setFocusPolicy()“, „ setFocusProxy()“ und „Tastaturfokus in Widgets“.
[static, since 6.6] void QWidget::setTabOrder(std::initializer_list<QWidget *> widgets)
Legt die Tabulatorreihenfolge für die Widgets in der Liste „ widgets “ fest, indem für jedes aufeinanderfolgende Widget-Paar die Funktion ` QWidget::setTabOrder(QWidget *, QWidget *)` aufgerufen wird.
Anstatt jedes Paar manuell wie folgt einzurichten:
setTabOrder(a, b); // a to b
setTabOrder(b, c); // a to b to c
setTabOrder(c, d); // a to b to c to dkönnen Sie Folgendes aufrufen:
setTabOrder({a, b, c, d}); // a to b to c to dDer Aufruf erzeugt keine geschlossene Tabulator-Fokus-Schleife. Wenn weitere Widgets mit der Fokusrichtlinie „ Qt::TabFocus “ vorhanden sind, wird durch Drücken der Tabulatortaste auf „ d “ der Fokus auf eines dieser Widgets verschoben und nicht zurück zu „ a “.
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.6 eingeführt.
Siehe auch setFocusPolicy(), setFocusProxy() und Tastaturfokus in Widgets.
void QWidget::setWindowFlag(Qt::WindowType flag, bool on = true)
Setzt das Fenster-Flag „ flag “ für dieses Widget, wenn „ on “ wahr ist; andernfalls wird das Flag zurückgesetzt.
Hinweis: Diese Funktion ruft „ setParent()“ auf, wenn die Flags für ein Fenster geändert werden, wodurch das Widget ausgeblendet wird. Sie müssen „ show()“ aufrufen, um das Widget wieder sichtbar zu machen.
Siehe auch setWindowFlags(), windowFlags() und windowType().
void QWidget::setWindowRole(const QString &role)
Setzt die Rolle des Fensters auf „ role “. Dies ist nur für Fenster unter X11 sinnvoll.
Siehe auch ` windowRole()`.
void QWidget::setWindowState(Qt::WindowStates windowState)
Setzt den Fensterstatus auf „ windowState “. Der Fensterstatus ist eine logische ODER-Verknüpfung aus „ Qt::WindowState “, „ Qt::WindowMinimized “, „ Qt::WindowMaximized “, „ Qt::WindowFullScreen “ und „ Qt::WindowActive “.
Ist das Fenster nicht sichtbar (d. h. „ isVisible()“ gibt „ false “ zurück), wird der Fensterstatus wirksam, sobald „ show()“ aufgerufen wird. Bei sichtbaren Fenstern erfolgt die Änderung sofort. Um beispielsweise zwischen Vollbild- und Normalmodus umzuschalten, verwenden Sie den folgenden Code:
w->setWindowState(w->windowState() ^ Qt::WindowFullScreen);Um ein minimiertes Fenster wiederherzustellen und zu aktivieren (unter Beibehaltung seines maximierten und/oder Vollbild-Zustands), verwenden Sie Folgendes:
w->setWindowState((w->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);Der Aufruf dieser Funktion blendet das Widget aus. Sie müssen ` show()` aufrufen, um das Widget wieder sichtbar zu machen.
Hinweis: Bei einigen Fenstersystemen wird „ Qt::WindowActive “ nicht sofort ausgeführt und kann in bestimmten Fällen ignoriert werden.
Wenn sich der Fensterzustand ändert, erhält das Widget einen Aufruf von ` changeEvent()` vom Typ ` QEvent::WindowStateChange`.
Siehe auch ` Qt::WindowState ` und ` windowState()`.
void QWidget::setupUi(QWidget *widget)
Richtet die Benutzeroberfläche für das angegebene „ widget “ ein.
Hinweis: Diese Funktion ist für Widgets verfügbar, die von mit uic erstellten Benutzeroberflächenbeschreibungen abgeleitet sind.
Siehe auch „Verwenden einer UI-Datei des Qt Widgets -Designers in Ihrer Anwendung“.
[slot] void QWidget::show()
Zeigt das Widget und seine untergeordneten Widgets an.
Bei untergeordneten Fenstern entspricht dies dem Aufruf von ` setVisible(true)`. Andernfalls entspricht dies dem Aufruf von ` showFullScreen()`, ` showMaximized()` oder ` setVisible(true)`, je nach dem Standardverhalten der Plattform hinsichtlich der Fensterflags.
Siehe auch raise(), showEvent(), hide(), setVisible(), showMinimized(), showMaximized(), showNormal(), isVisible() und windowFlags().
[virtual protected] void QWidget::showEvent(QShowEvent *event)
Dieser Ereignisbehandler kann in einer Unterklasse neu implementiert werden, um Widget-Anzeigeereignisse zu empfangen, die über den Parameter „ event “ übergeben werden.
Nicht-spontane Einblendungsereignisse werden unmittelbar vor der Einblendung an die Widgets gesendet. Die spontanen Einblendungsereignisse von Fenstern werden erst danach übermittelt.
Hinweis: Ein Widget empfängt spontane Einblend- und Ausblendereignisse, wenn sein Darstellungsstatus vom Fenstersystem geändert wird, z. B. ein spontanes Ausblendereignis, wenn der Benutzer das Fenster minimiert, und ein spontanes Einblendereignis, wenn das Fenster wiederhergestellt wird. Nach dem Empfang eines spontanen Ausblendereignisses gilt ein Widget im Sinne von ` isVisible()` weiterhin als sichtbar.
Siehe auch visible, event() und QShowEvent.
[slot] void QWidget::showFullScreen()
Zeigt das Widget im Vollbildmodus an.
Der Aufruf dieser Funktion wirkt sich nur auf ` windows` aus.
Um den Vollbildmodus zu verlassen, rufen Sie ` showNormal()` oder ` close()` auf.
Hinweis: DerVollbildmodus funktioniert unter Windows einwandfrei, weist unter X jedoch gewisse Probleme auf. Diese Probleme sind auf Einschränkungen des ICCCM-Protokolls zurückzuführen, das die Kommunikation zwischen X11-Clients und dem Fenstermanager regelt. ICCCM versteht das Konzept von Vollbildfenstern ohne Rahmen einfach nicht. Daher besteht die beste Lösung darin, ein randloses Fenster anzufordern und es so zu positionieren und in der Größe anzupassen, dass es den gesamten Bildschirm ausfüllt. Je nach Fenstermanager funktioniert dies möglicherweise oder auch nicht. Das randlose Fenster wird mithilfe von MOTIF-Hinweisen angefordert, die von praktisch allen modernen Fenstermanagern zumindest teilweise unterstützt werden.
Eine Alternative wäre, den Fenstermanager vollständig zu umgehen und ein Fenster mit dem Flag „ Qt::X11BypassWindowManagerHint “ zu erstellen. Dies bringt jedoch andere schwerwiegende Probleme mit sich, wie beispielsweise einen fehlerhaften Tastaturfokus und sehr seltsame Effekte bei Desktop-Wechseln oder wenn der Benutzer andere Fenster in den Vordergrund holt.
X11-Fenstermanager, die modernen Post-ICCCM-Spezifikationen entsprechen, unterstützen den Vollbildmodus ordnungsgemäß.
Unter macOS versetzt das Anzeigen eines Fensters im Vollbildmodus die gesamte Anwendung in den Vollbildmodus und stellt ihr einen eigenen Desktop zur Verfügung. Wird ein weiteres Fenster angezeigt, während die Anwendung im Vollbildmodus läuft, kann dies automatisch dazu führen, dass auch dieses Fenster im Vollbildmodus angezeigt wird. Um dies zu verhindern, verlassen Sie den Vollbildmodus, indem Sie „ showNormal()“ aufrufen oder „ close()“ auf das Vollbildfenster anwenden, bevor Sie ein weiteres Fenster anzeigen.
Siehe auch „ showNormal()“, „ showMaximized()“, „ show()“, „ isVisible()“ und „ close()“.
[slot] void QWidget::showMaximized()
Zeigt das Widget in maximierter Ansicht an.
Der Aufruf dieser Funktion wirkt sich nur auf „ windows “ aus.
Unter X11 funktioniert diese Funktion bei bestimmten Fenstermanagern möglicherweise nicht ordnungsgemäß. Eine Erläuterung finden Sie in der Dokumentation zu „Window Geometry “.
Siehe auch setWindowState(), showNormal(), showMinimized(), show(), hide() und isVisible().
[slot] void QWidget::showMinimized()
Zeigt das Widget minimiert als Symbol an.
Der Aufruf dieser Funktion wirkt sich nur auf ` windows` aus.
Siehe auch showNormal(), showMaximized(), show(), hide(), isVisible() und isMinimized().
[slot] void QWidget::showNormal()
Stellt das Widget wieder her, nachdem es maximiert oder minimiert wurde.
Der Aufruf dieser Funktion wirkt sich nur auf ` windows` aus.
Siehe auch setWindowState(), showMinimized(), showMaximized(), show(), hide() und isVisible().
void QWidget::stackUnder(QWidget *w)
Platziert das Widget im Stapel des übergeordneten Widgets unter „ w “.
Damit dies funktioniert, müssen das Widget selbst und „ w “ auf derselben Ebene stehen.
Siehe auch „ raise()“ und „ lower()“.
QStyle *QWidget::style() const
Siehe auch QWidget::setStyle(), QApplication::setStyle() und QApplication::style().
[virtual protected] void QWidget::tabletEvent(QTabletEvent *event)
Dieser Ereignis-Handler für das Ereignis „ event “ kann in einer Unterklasse neu implementiert werden, um Tablet-Ereignisse für das Widget zu empfangen.
Wenn Sie diesen Handler neu implementieren, ist es sehr wichtig, dass Sie das Ereignis „ ignore() “ setzen, falls Sie es nicht verarbeiten, damit das übergeordnete Widget es interpretieren kann.
Die Standardimplementierung ignoriert das Ereignis.
Wenn die Tablet-Verfolgung deaktiviert ist, treten Tablet-Bewegungsereignisse nur auf, wenn der Stift Kontakt mit dem Tablet hat oder mindestens eine Stift-Taste gedrückt wird, während der Stift bewegt wird. Wenn die Tablet-Verfolgung aktiviert ist, treten Tablet-Bewegungsereignisse auch dann auf, wenn der Stift sich in der Nähe des Tablets befindet, ohne dass Tasten gedrückt werden.
Siehe auch QEvent::ignore(), QEvent::accept(), event(), setTabletTracking() und QTabletEvent.
bool QWidget::testAttribute(Qt::WidgetAttribute attribute) const
Gibt „ true “ zurück, wenn das Attribut „ attribute “ für dieses Widget gesetzt ist; andernfalls wird „ false “ zurückgegeben.
Siehe auch setAttribute().
bool QWidget::underMouse() const
Gibt „ true “ zurück, wenn sich das Widget unter dem Mauszeiger befindet; andernfalls wird „ false “ zurückgegeben.
Dieser Wert wird bei Drag-and-Drop-Vorgängen nicht korrekt aktualisiert.
Siehe auch enterEvent() und leaveEvent().
void QWidget::ungrabGesture(Qt::GestureType gesture)
Hebt die Abonnierung des Widgets für einen bestimmten gesture -Typ auf
Siehe auch „ grabGesture()“ und „ QGestureEvent “.
[slot] void QWidget::update()
Aktualisiert das Widget, sofern Aktualisierungen nicht deaktiviert sind oder das Widget ausgeblendet ist.
Diese Funktion löst keine sofortige Neuzeichnung aus, sondern plant ein Zeichenereignis zur Verarbeitung ein, sobald Qt zur Hauptereignisschleife zurückkehrt. Dadurch kann Qt die Geschwindigkeit optimieren und Flackern reduzieren, was bei einem Aufruf von ` repaint()` nicht der Fall ist.
Ein mehrfacher Aufruf von `update()` führt normalerweise zu nur einem einzigen Aufruf von ` paintEvent()`.
Qt löscht normalerweise den Bereich des Widgets vor dem Aufruf von ` paintEvent()`. Ist das Widget-Attribut ` Qt::WA_OpaquePaintEvent ` gesetzt, ist das Widget selbst dafür verantwortlich, alle seine Pixel mit einer undurchsichtigen Farbe zu füllen.
Hinweis: Dieser Slot ist überladen. So verbinden Sie sich mit diesem Slot:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
widget, qOverload<>(&QWidget::update));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
widget, [receiver = widget]() { receiver->update(); });Siehe auch „ repaint()“, „ paintEvent()“, „ setUpdatesEnabled()“ und „Analog Clock“.
void QWidget::update(const QRect &rect)
Diese Version aktualisiert ein Rechteck rect innerhalb des Widgets.
Dies ist eine überladene Funktion.
void QWidget::update(const QRegion &rgn)
Diese Version zeichnet einen Bereich rgn innerhalb des Widgets neu.
Dies ist eine überladene Funktion.
void QWidget::update(int x, int y, int w, int h)
Diese Version aktualisiert ein Rechteck (x, y, w, h) innerhalb des Widgets.
Dies ist eine überladene Funktion.
void QWidget::updateGeometry()
Teilt dem Layout-System mit, dass sich dieses Widget geändert hat und möglicherweise seine Geometrie anpassen muss.
Rufen Sie diese Funktion auf, wenn sich die Werte von ` sizeHint()` oder ` sizePolicy()` geändert haben.
Bei explizit ausgeblendeten Widgets hat `updateGeometry()` keine Auswirkung. Das Layout-System wird benachrichtigt, sobald das Widget angezeigt wird.
[protected slot] void QWidget::updateMicroFocus(Qt::InputMethodQuery query = Qt::ImQueryAll)
Aktualisiert den Mikro-Fokus des Widgets und informiert die Eingabemethoden darüber, dass sich der durch „ query “ angegebene Status geändert hat.
QRegion QWidget::visibleRegion() const
Gibt den nicht verdeckten Bereich zurück, in dem Malereignisse auftreten können.
Bei sichtbaren Widgets handelt es sich hierbei um eine Annäherung an den Bereich, der nicht von anderen Widgets überdeckt wird; andernfalls ist dies ein leerer Bereich.
Die Funktion „ repaint()“ ruft diese Funktion bei Bedarf auf, sodass Sie sie im Allgemeinen nicht selbst aufrufen müssen.
[virtual protected] void QWidget::wheelEvent(QWheelEvent *event)
Dieser Ereignis-Handler für das Ereignis „ event “ kann in einer Unterklasse neu implementiert werden, um Mausrad-Ereignisse für das Widget zu empfangen.
Wenn Sie diesen Handler neu implementieren, ist es sehr wichtig, dass Sie das Ereignis mit ` ignore() ` abbrechen, falls Sie es nicht verarbeiten, damit das übergeordnete Widget es interpretieren kann.
Die Standardimplementierung ignoriert das Ereignis.
Siehe auch QEvent::ignore(), QEvent::accept(), event() und QWheelEvent.
WId QWidget::winId() const
Gibt die Fenstersystem-Kennung des Widgets zurück.
Im Prinzip portabel, aber wenn Sie diese Funktion verwenden, sind Sie wahrscheinlich dabei, etwas zu tun, das nicht portabel ist. Seien Sie vorsichtig.
Wenn ein Widget nicht nativ (fremd) ist und winId() darauf aufgerufen wird, erhält dieses Widget ein natives Handle.
Dieser Wert kann sich zur Laufzeit ändern. Nach einer Änderung der Fenstersystem-Kennung wird ein Ereignis vom Typ „ QEvent::WinIdChange “ an das Widget gesendet.
Siehe auch ` find()`.
QWidget *QWidget::window() const
Gibt das Fenster für dieses Widget zurück, d. h. das nächsthöhere Widget, das einen Frame des Fenstersystems hat (oder haben könnte).
Wenn das Widget ein Fenster ist, wird das Widget selbst zurückgegeben.
Eine typische Anwendung ist das Ändern des Fenstertitels:
aWidget->window()->setWindowTitle("New Window Title");Siehe auch ` isWindow()`.
QWindow *QWidget::windowHandle() const
Wenn es sich um ein natives Widget handelt, wird das zugehörige ` QWindow` zurückgegeben. Andernfalls wird `null` zurückgegeben.
Zu den nativen Widgets gehören Widgets der obersten Ebene, `QGLWidget` sowie untergeordnete Widgets, für die ` winId()` aufgerufen wurde.
Siehe auch ` winId()` und ` screen()`.
[signal] void QWidget::windowIconChanged(const QIcon &icon)
Dieses Signal wird ausgelöst, wenn sich das Symbol des Fensters geändert hat, wobei die neue Eigenschaft „ icon “ als Argument übergeben wird.
Hinweis: Notifier -Signal für die Eigenschaft „ windowIcon “.
QString QWidget::windowRole() const
Gibt die Rolle des Fensters oder eine leere Zeichenkette zurück.
Siehe auch „ setWindowRole()“, „ windowIcon “ und „ windowTitle “.
Qt::WindowStates QWidget::windowState() const
Gibt den aktuellen Fensterzustand zurück. Der Fensterzustand ist eine OR-Verknüpfung aus Qt::WindowState: Qt::WindowMinimized, Qt::WindowMaximized, Qt::WindowFullScreen und Qt::WindowActive.
Siehe auch Qt::WindowState und setWindowState().
[signal] void QWidget::windowTitleChanged(const QString &title)
Dieses Signal wird ausgelöst, wenn sich der Titel des Fensters geändert hat, wobei die neue Eigenschaft „ title “ als Argument übergeben wird.
Hinweis: Notifier -Signal für die Eigenschaft „ windowTitle “.
Qt::WindowType QWidget::windowType() const
Gibt den Fenstertyp dieses Widgets zurück. Dies entspricht den Funktionen „ windowFlags()“ und „ Qt::WindowType_Mask “.
Siehe auch ` windowFlags`.
Makro-Dokumentation
QWIDGETSIZE_MAX
Legt die maximale Größe für ein „ QWidget “-Objekt fest.
Die größte zulässige Größe für ein Widget beträgt „ QSize “ (QWIDGETSIZE_MAX, QWIDGETSIZE_MAX), d. h. „ QSize “ (16777215, 16777215).
Siehe auch ` QWidget::setMaximumSize()`.
© 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.