QMainWindow Class
Die Klasse „QMainWindow“ stellt ein Hauptanwendungsfenster bereit. Mehr...
| Header: | #include <QMainWindow> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Erbt von: | QWidget |
Öffentliche Typen
| enum | DockOption { AnimatedDocks, AllowNestedDocks, AllowTabbedDocks, ForceTabbedDocks, VerticalTabs, GroupedDragging } |
| flags | DockOptions |
Eigenschaften
|
|
Öffentliche Funktionen
| QMainWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
| virtual | ~QMainWindow() |
| void | addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget) |
| void | addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget, Qt::Orientation orientation) |
| void | addToolBar(Qt::ToolBarArea area, QToolBar *toolbar) |
| void | addToolBar(QToolBar *toolbar) |
| QToolBar * | addToolBar(const QString &title) |
| void | addToolBarBreak(Qt::ToolBarArea area = Qt::TopToolBarArea) |
| QWidget * | centralWidget() const |
| Qt::DockWidgetArea | corner(Qt::Corner corner) const |
| virtual QMenu * | createPopupMenu() |
| QMainWindow::DockOptions | dockOptions() const |
| Qt::DockWidgetArea | dockWidgetArea(QDockWidget *dockwidget) const |
| bool | documentMode() const |
| QSize | iconSize() const |
| void | insertToolBar(QToolBar *before, QToolBar *toolbar) |
| void | insertToolBarBreak(QToolBar *before) |
| bool | isAnimated() const |
| bool | isDockNestingEnabled() const |
| QMenuBar * | menuBar() const |
| QWidget * | menuWidget() const |
| void | removeDockWidget(QDockWidget *dockwidget) |
| void | removeToolBar(QToolBar *toolbar) |
| void | removeToolBarBreak(QToolBar *before) |
| void | resizeDocks(const QList<QDockWidget *> &docks, const QList<int> &sizes, Qt::Orientation orientation) |
| bool | restoreDockWidget(QDockWidget *dockwidget) |
| bool | restoreState(const QByteArray &state, int version = 0) |
| QByteArray | saveState(int version = 0) const |
| void | setCentralWidget(QWidget *widget) |
| void | setCorner(Qt::Corner corner, Qt::DockWidgetArea area) |
| void | setDockOptions(QMainWindow::DockOptions options) |
| void | setDocumentMode(bool enabled) |
| void | setIconSize(const QSize &iconSize) |
| void | setMenuBar(QMenuBar *menuBar) |
| void | setMenuWidget(QWidget *menuBar) |
| void | setStatusBar(QStatusBar *statusbar) |
| void | setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition) |
| void | setTabShape(QTabWidget::TabShape tabShape) |
| void | setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle) |
| void | splitDockWidget(QDockWidget *first, QDockWidget *second, Qt::Orientation orientation) |
| QStatusBar * | statusBar() const |
| QTabWidget::TabPosition | tabPosition(Qt::DockWidgetArea area) const |
| QTabWidget::TabShape | tabShape() const |
| QList<QDockWidget *> | tabifiedDockWidgets(QDockWidget *dockwidget) const |
| void | tabifyDockWidget(QDockWidget *first, QDockWidget *second) |
| QWidget * | takeCentralWidget() |
| Qt::ToolBarArea | toolBarArea(const QToolBar *toolbar) const |
| bool | toolBarBreak(QToolBar *toolbar) const |
| Qt::ToolButtonStyle | toolButtonStyle() const |
| bool | unifiedTitleAndToolBarOnMac() const |
Öffentliche Slots
| void | setAnimated(bool enabled) |
| void | setDockNestingEnabled(bool enabled) |
| void | setUnifiedTitleAndToolBarOnMac(bool set) |
Signale
| void | iconSizeChanged(const QSize &iconSize) |
| void | tabifiedDockWidgetActivated(QDockWidget *dockWidget) |
| void | toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle) |
Neu implementierte geschützte Funktionen
| virtual void | contextMenuEvent(QContextMenuEvent *event) override |
| virtual bool | event(QEvent *event) override |
Detaillierte Beschreibung
Qt-Hauptfenster-Framework
Ein Hauptfenster bietet ein Framework zum Erstellen der Benutzeroberfläche einer Anwendung. Qt verfügt über `QMainWindow` und die zugehörigen Klassen zur Verwaltung von Hauptfenstern. `QMainWindow` verfügt über ein eigenes Layout, dem Sie ` QToolBar`s, ` QDockWidget`s, ein ` QMenuBar` und ein ` QStatusBar` hinzufügen können. Das Layout verfügt über einen zentralen Bereich, der von jeder Art von Widget belegt werden kann. Unten sehen Sie eine Abbildung des Layouts.

Erstellen von Komponenten für das Hauptfenster
Ein zentrales Widget ist in der Regel ein Standard-Qt-Widget wie beispielsweise ein „ QTextEdit “ oder ein „ QGraphicsView “. Für fortgeschrittene Anwendungen können auch benutzerdefinierte Widgets verwendet werden. Sie legen das zentrale Widget mit „ setCentralWidget() “ fest.
Hauptfenster verfügen entweder über eine Einzel- (SDI) oder eine Mehrfach- (MDI) Dokumentenschnittstelle. MDI-Anwendungen erstellen Sie in Qt, indem Sie ein ` QMdiArea ` als zentrales Widget verwenden.
Wir werden nun jedes der anderen Widgets betrachten, die einem Hauptfenster hinzugefügt werden können. Wir geben Beispiele dafür, wie man sie erstellt und hinzufügt.
Menüs erstellen
Qt implementiert Menüs in „ QMenu “, und „QMainWindow“ verwaltet sie in einer „ QMenuBar “. „ QAction“ werden den Menüs hinzugefügt und dort als Menüeinträge angezeigt.
Sie können der Menüleiste des Hauptfensters neue Menüs hinzufügen, indem Sie ` menuBar()` aufrufen – diese Funktion gibt die ` QMenuBar ` des Fensters zurück – und anschließend mit ` QMenuBar::addMenu()` ein Menü hinzufügen.
QMainWindow verfügt über eine Standard-Menüleiste, Sie können jedoch mit ` setMenuBar()` auch selbst eine festlegen. Wenn Sie eine benutzerdefinierte Menüleiste implementieren möchten (d. h. das Widget ` QMenuBar ` nicht verwenden möchten), können Sie diese mit ` setMenuWidget()` festlegen.
Es folgt ein Beispiel für die Erstellung von Menüs:
void MainWindow::createMenus()
{
fileMenu = menuBar()->addMenu(tr("&File"));
fileMenu->addAction(newAct);
fileMenu->addAction(openAct);
fileMenu->addAction(saveAct);Die Funktion ` createPopupMenu() ` erstellt Popup-Menüs, wenn das Hauptfenster Kontextmenü-Ereignisse empfängt. Die Standardimplementierung generiert ein Menü mit den aktivierbaren Aktionen aus den Dock-Widgets und Symbolleisten. Sie können ` createPopupMenu() ` für ein benutzerdefiniertes Menü neu implementieren.
Erstellen von Symbolleisten
Symbolleisten werden in der Klasse „ QToolBar “ implementiert. Sie fügen eine Symbolleiste zu einem Hauptfenster hinzu mit ` addToolBar()`.
Sie steuern die Ausgangsposition von Symbolleisten, indem Sie diese einem bestimmten ` Qt::ToolBarArea` zuweisen. Sie können einen Bereich durch Einfügen einer Symbolleisten-Trennung – vergleichbar mit einem Zeilenumbruch bei der Textbearbeitung – mit ` addToolBarBreak() ` oder ` insertToolBarBreak()` aufteilen. Außerdem können Sie die Platzierung durch den Benutzer mit ` QToolBar::setAllowedAreas()` und ` QToolBar::setMovable()` einschränken.
Die Größe der Symbolleisten-Symbole kann mit „ iconSize() “ abgerufen werden. Die Größen sind plattformabhängig; mit „ setIconSize() “ können Sie eine feste Größe festlegen. Mit „ setToolButtonStyle() “ können Sie das Erscheinungsbild aller Symbolleisten-Schaltflächen ändern.
Es folgt ein Beispiel für die Erstellung einer Symbolleiste:
void MainWindow::createToolBars()
{
fileToolBar = addToolBar(tr("File"));
fileToolBar->addAction(newAct);Erstellen von Dock-Widgets
Dock-Widgets werden in der Klasse ` QDockWidget ` implementiert. Ein Dock-Widget ist ein Fenster, das im Hauptfenster angedockt werden kann. Sie fügen einem Hauptfenster Dock-Widgets mit ` addDockWidget()` hinzu.
Es gibt vier Dock-Widget-Bereiche, die durch die Enumeration ` Qt::DockWidgetArea ` vorgegeben sind: links, rechts, oben und unten. Mit ` setCorner()` können Sie festlegen, welcher Dock-Widget-Bereich die Ecken einnehmen soll, an denen sich die Bereiche überschneiden. Standardmäßig kann jeder Bereich nur eine Zeile (vertikal oder horizontal) von Dock-Widgets enthalten. Wenn Sie jedoch die Verschachtelung mit ` setDockNestingEnabled()` aktivieren, können Dock-Widgets in beide Richtungen hinzugefügt werden.
Zwei Dock-Widgets können zudem übereinander gestapelt werden. In diesem Fall wird ein „ QTabBar “ verwendet, um auszuwählen, welches der Widgets angezeigt werden soll.
Hier ein Beispiel, wie man Dock-Widgets erstellt und zu einem Hauptfenster hinzufügt:
QDockWidget *dockWidget = new QDockWidget(tr("Dock Widget"), this);
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea |
Qt::RightDockWidgetArea);
dockWidget->setWidget(dockWidgetContents);
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);Die Statusleiste
Sie können eine Statusleiste mit ` setStatusBar()` festlegen, es wird jedoch bereits beim ersten Aufruf von ` statusBar() ` (das die Statusleiste des Hauptfensters zurückgibt) eine erstellt. Informationen zur Verwendung finden Sie unter ` QStatusBar `.
Speichern des Zustands
`QMainWindow` kann den Zustand seines Layouts mit ` saveState()` speichern; dieser kann später mit ` restoreState()` abgerufen werden. Gespeichert werden die Position und Größe (relativ zur Größe des Hauptfensters) der Symbolleisten und der Dock-Widgets.
Sicherheitshinweise
Die Funktion ` restoreState()` deserialisiert einen versionierten Binär-Blob, der das Layout der Symbolleisten und Andock-Widgets beschreibt, einschließlich einer rekursiv verschachtelten Baumstruktur für geteilte und mit Registerkarten versehene Andockbereiche. Der „Magic Marker“ und die Version des Formats werden validiert, aber einzelne Felder – wie beispielsweise die Indizes der Andockbereiche und die Tiefe des verschachtelten Layoutbaums – werden nach Akzeptanz der äußeren Struktur nicht mehr anhand der tatsächlichen Konfiguration des Hauptfensters auf gültige Werte überprüft.
Übergeben Sie an ` restoreState()` ausschließlich ein ` QByteArray `, das zuvor von ` saveState()` erzeugt und von derselben oder einer kompatiblen Version Ihrer Anwendung gespeichert wurde, typischerweise über ` QSettings`. Rufen Sie ` restoreState()` nicht mit Daten unbekannter oder nicht vertrauenswürdiger Herkunft auf, wie beispielsweise einer aus dem Netzwerk heruntergeladenen Datei, einer synchronisierten oder gemeinsam genutzten Konfigurationsdatei oder Daten, die von einer anderen, möglicherweise kompromittierten Anwendung bereitgestellt wurden.
Siehe auch „ QMenuBar“ , „ QToolBar “, „ QStatusBar “, „ QDockWidget “ und das Beispiel „Menüs“.
Dokumentation zum Mitgliedstyp
enum QMainWindow::DockOption
flags QMainWindow::DockOptions
Diese Enumeration enthält Flags, die das Andockverhalten von QMainWindow festlegen.
| Konstante | Wert | Beschreibung |
|---|---|---|
QMainWindow::AnimatedDocks | 0x01 | Entspricht der Eigenschaft „ animated “. |
QMainWindow::AllowNestedDocks | 0x02 | Identisch mit der Eigenschaft „ dockNestingEnabled “. |
QMainWindow::AllowTabbedDocks | 0x04 | Der Benutzer kann ein Dock-Widget „auf“ ein anderes ziehen. Die beiden Widgets werden übereinander gestapelt, und es erscheint eine Registerleiste, über die ausgewählt werden kann, welches Widget sichtbar sein soll. |
QMainWindow::ForceTabbedDocks | 0x08 | Jeder Dock-Bereich enthält einen einzelnen Stapel von Dock-Widgets mit Registerkarten. Mit anderen Worten: Dock-Widgets können in einem Dock-Bereich nicht nebeneinander platziert werden. Ist diese Option aktiviert, hat „AllowNestedDocks“ keine Auswirkung. |
QMainWindow::VerticalTabs | 0x10 | Die beiden vertikalen Dock-Bereiche an den Seiten des Hauptfensters zeigen ihre Registerkarten vertikal an. Ist diese Option nicht gesetzt, zeigen alle Dock-Bereiche ihre Registerkarten unten an. Setzt „AllowTabbedDocks“ voraus. Siehe auch „ setTabPosition()“. |
QMainWindow::GroupedDragging | 0x20 | Beim Ziehen der Titelleiste eines Docks werden alle Registerkarten mitgezogen, die mit diesem Dock verknüpft sind. Impliziert „AllowTabbedDocks“. Funktioniert nicht gut, wenn für einige QDockWidgets Einschränkungen hinsichtlich des zulässigen Bereichs bestehen. (Dieser Enum-Wert wurde in Qt 5.6 hinzugefügt.) |
Diese Optionen steuern lediglich, wie Dock-Widgets in einem „ QMainWindow “ abgelegt werden dürfen. Sie ordnen die Dock-Widgets nicht neu an, um sie an die angegebenen Optionen anzupassen. Aus diesem Grund sollten sie festgelegt werden, bevor Dock-Widgets zum Hauptfenster hinzugefügt werden. Ausnahmen bilden die Optionen „AnimatedDocks“ und „VerticalTabs“, die jederzeit festgelegt werden können.
Der Typ `DockOptions` ist ein `typedef` für ` QFlags<DockOption>`. Er speichert eine ODER-Kombination von `DockOption`-Werten.
Dokumentation zu den Eigenschaften
animated : bool
Diese Eigenschaft legt fest, ob das Verschieben von Dock-Widgets und Symbolleisten animiert dargestellt wird
Wird ein Dock-Widget oder eine Symbolleiste über das Hauptfenster gezogen, passt das Hauptfenster seinen Inhalt an, um anzuzeigen, wo das Dock-Widget oder die Symbolleiste angedockt wird, wenn es/sie dort abgelegt wird. Durch Setzen dieser Eigenschaft verschiebt „ QMainWindow “ seinen Inhalt in einer flüssigen Animation. Durch Zurücksetzen dieser Eigenschaft rasten die Inhalte an ihren neuen Positionen ein.
Standardmäßig ist diese Eigenschaft gesetzt. Sie kann deaktiviert werden, wenn das Hauptfenster Widgets enthält, deren Größenanpassung oder Neuzeichnung nur langsam erfolgt.
Das Setzen dieser Eigenschaft entspricht dem Setzen der Option „ AnimatedDocks “ mithilfe von ` setDockOptions()`.
Zugriffsfunktionen:
| bool | isAnimated() const |
| void | setAnimated(bool enabled) |
dockNestingEnabled : bool
Diese Eigenschaft legt fest, ob Docks verschachtelt werden können
Wenn diese Eigenschaft auf „ false “ gesetzt ist, können Dock-Bereiche nur eine einzige Zeile (horizontal oder vertikal) von Dock-Widgets enthalten. Wenn diese Eigenschaft auf „ true “ gesetzt ist, kann der von einem Dock-Widget belegte Bereich in beide Richtungen geteilt werden, um weitere Dock-Widgets aufzunehmen.
Die Verschachtelung von Docks ist nur in Anwendungen erforderlich, die viele Dock-Widgets enthalten. Sie bietet dem Benutzer mehr Freiheit bei der Organisation seines Hauptfensters. Allerdings führt die Verschachtelung von Docks zu einem komplexeren (und weniger intuitiven) Verhalten, wenn ein Dock-Widget über das Hauptfenster gezogen wird, da es mehr Möglichkeiten gibt, wie ein abgelegtes Dock-Widget im Dock-Bereich platziert werden kann.
Das Festlegen dieser Eigenschaft entspricht dem Festlegen der Option „ AllowNestedDocks “ mithilfe von ` setDockOptions()`.
Zugriffsfunktionen:
| bool | isDockNestingEnabled() const |
| void | setDockNestingEnabled(bool enabled) |
dockOptions : DockOptions
Diese Eigenschaft legt das Andockverhalten von QMainWindow
Der Standardwert lautet „ AnimatedDocks “ | „ AllowTabbedDocks “.
Zugriffsfunktionen:
| QMainWindow::DockOptions | dockOptions() const |
| void | setDockOptions(QMainWindow::DockOptions options) |
documentMode : bool
Diese Eigenschaft gibt an, ob die Registerkartenleiste für Dock-Widgets mit Registerkarten auf den Dokumentmodus eingestellt ist.
Der Standardwert ist „false“.
Zugriffsfunktionen:
| bool | documentMode() const |
| void | setDocumentMode(bool enabled) |
Siehe auch „ QTabBar::documentMode “.
iconSize : QSize
Größe der Symbolleisten-Symbole in diesem Hauptfenster.
Die Standardeinstellung entspricht der Standardgröße der Symbolleisten-Symbole des GUI-Stils. Beachten Sie, dass die verwendeten Symbole mindestens diese Größe haben müssen, da die Symbole lediglich verkleinert werden.
Zugriffsfunktionen:
| QSize | iconSize() const |
| void | setIconSize(const QSize &iconSize) |
tabShape : QTabWidget::TabShape
Diese Eigenschaft enthält die Form der Registerkarte, die für Widgets mit Registerkarten verwendet wird.
Der Standardwert ist „ QTabWidget::Rounded “.
Zugriffsfunktionen:
| QTabWidget::TabShape | tabShape() const |
| void | setTabShape(QTabWidget::TabShape tabShape) |
Siehe auch „ setTabPosition()“.
toolButtonStyle : Qt::ToolButtonStyle
Stil der Symbolleisten-Schaltflächen in diesem Hauptfenster.
Damit der Stil der Symbolleisten-Schaltflächen den Systemeinstellungen folgt, setzen Sie diese Eigenschaft auf „ Qt::ToolButtonFollowStyle “. Unter Unix werden die Benutzereinstellungen der Desktop-Umgebung verwendet. Auf anderen Plattformen bedeutet „ Qt::ToolButtonFollowStyle “, dass nur das Symbol angezeigt wird.
Die Standardeinstellung ist „ Qt::ToolButtonIconOnly “.
Zugriffsfunktionen:
| Qt::ToolButtonStyle | toolButtonStyle() const |
| void | setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle) |
unifiedTitleAndToolBarOnMac : bool
Diese Eigenschaft gilt unabhängig davon, ob das Fenster unter macOS das einheitliche Design für Titelzeile und Symbolleiste verwendet
Beachten Sie, dass die Qt-5-Implementierung im Vergleich zu Qt 4 einige Einschränkungen aufweist:
- Die Verwendung in Fenstern mit OpenGL-Inhalten wird nicht unterstützt. Dazu gehört auch „ QOpenGLWidget “.
- Die Verwendung von andockbaren oder verschiebbaren Symbolleisten kann zu Darstellungsfehlern führen und wird nicht empfohlen
Zugriffsfunktionen:
| bool | unifiedTitleAndToolBarOnMac() const |
| void | setUnifiedTitleAndToolBarOnMac(bool set) |
Dokumentation der Mitgliedsfunktionen
[explicit] QMainWindow::QMainWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
Erstellt ein QMainWindow mit dem angegebenen Flag „ parent “ und dem angegebenen Widget- flags.
QMainWindow setzt das Flag „ Qt::Window “ selbst und wird daher immer als Widget der obersten Ebene erstellt.
[virtual noexcept] QMainWindow::~QMainWindow()
Schließt das Hauptfenster.
void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget)
Fügt die angegebene „ dockwidget “ zur angegebenen „ area “ im Hauptfenster hinzu.
void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget, Qt::Orientation orientation)
Fügt dockwidget in die angegebene area in der durch orientation festgelegten Richtung ein.
void QMainWindow::addToolBar(Qt::ToolBarArea area, QToolBar *toolbar)
Fügt die „ toolbar “ in die angegebene „ area “ in diesem Hauptfenster ein. Die „ toolbar “ wird am Ende des aktuellen Symbolleistenblocks (d. h. der Zeile) platziert. Wenn das Hauptfenster bereits „ toolbar “ verwaltet, wird die Symbolleiste lediglich an „ area “ verschoben.
Siehe auch „ insertToolBar()“, „ addToolBarBreak()“ und „ insertToolBarBreak()“.
void QMainWindow::addToolBar(QToolBar *toolbar)
Entspricht dem Aufruf von addToolBar(Qt::TopToolBarArea, toolbar)
Dies ist eine überladene Funktion.
QToolBar *QMainWindow::addToolBar(const QString &title)
Erstellt ein „ QToolBar “-Objekt, setzt dessen Fenstertitel auf „ title “ und fügt es in den oberen Symbolleistenbereich ein.
Dies ist eine überladene Funktion.
Siehe auch ` setWindowTitle()`.
void QMainWindow::addToolBarBreak(Qt::ToolBarArea area = Qt::TopToolBarArea)
Fügt nach allen anderen vorhandenen Objekten eine Symbolleistenunterbrechung in die angegebene „ area “ ein.
QWidget *QMainWindow::centralWidget() const
Gibt das zentrale Widget für das Hauptfenster zurück. Diese Funktion gibt „ nullptr “ zurück, wenn das zentrale Widget noch nicht festgelegt wurde.
Siehe auch „ setCentralWidget()“.
[override virtual protected] void QMainWindow::contextMenuEvent(QContextMenuEvent *event)
Implementiert: ` QWidget::contextMenuEvent` (`QContextMenuEvent *event`).
Qt::DockWidgetArea QMainWindow::corner(Qt::Corner corner) const
Gibt den Dock-Widget-Bereich zurück, der den angegebenen Bereich corner einnimmt.
Siehe auch setCorner().
[virtual] QMenu *QMainWindow::createPopupMenu()
Gibt ein Popup-Menü zurück, das auswählbare Einträge für die im Hauptfenster vorhandenen Symbolleisten und Dock-Widgets enthält. Sind keine Symbolleisten und Dock-Widgets vorhanden, gibt diese Funktion „ nullptr “ zurück.
Standardmäßig wird diese Funktion vom Hauptfenster aufgerufen, wenn der Benutzer ein Kontextmenü aktiviert, typischerweise durch einen Rechtsklick auf eine Symbolleiste oder ein Dock-Widget.
Wenn Sie ein benutzerdefiniertes Popup-Menü erstellen möchten, implementieren Sie diese Funktion neu und geben Sie ein neu erstelltes Popup-Menü zurück. Die Eigentumsrechte am Popup-Menü werden auf den Aufrufer übertragen.
Siehe auch „ addDockWidget()“, „ addToolBar()“ und „ menuBar()“.
Qt::DockWidgetArea QMainWindow::dockWidgetArea(QDockWidget *dockwidget) const
Gibt den „ Qt::DockWidgetArea “ für „ dockwidget “ zurück. Wenn „ dockwidget “ nicht zum Hauptfenster hinzugefügt wurde, gibt diese Funktion „ Qt::NoDockWidgetArea “ zurück.
Siehe auch addDockWidget(), splitDockWidget() und Qt::DockWidgetArea.
[override virtual protected] bool QMainWindow::event(QEvent *event)
Umsetzt: ` QWidget::event(QEvent *event)`.
[signal] void QMainWindow::iconSizeChanged(const QSize &iconSize)
Dieses Signal wird ausgelöst, wenn die Größe der im Fenster verwendeten Symbole geändert wird. Die neue Symbolgröße wird in ` iconSize` übergeben.
Sie können dieses Signal mit anderen Komponenten verknüpfen, um ein einheitliches Erscheinungsbild Ihrer Anwendung zu gewährleisten.
Siehe auch ` setIconSize()`.
void QMainWindow::insertToolBar(QToolBar *before, QToolBar *toolbar)
Fügt die „ toolbar “ in den Bereich ein, der von der Symbolleiste „ before “ belegt wird, sodass sie vor dieser angezeigt wird. Im normalen Layoutbetrieb von links nach rechts bedeutet dies beispielsweise, dass „ toolbar “ in einem horizontalen Symbolleistenbereich links neben der durch „ before “ angegebenen Symbolleiste angezeigt wird.
Siehe auch „ insertToolBarBreak()“, „ addToolBar()“ und „ addToolBarBreak()“.
void QMainWindow::insertToolBarBreak(QToolBar *before)
Fügt einen Symbolleistenumbruch vor der durch „ before “ angegebenen Symbolleiste ein.
QMenuBar *QMainWindow::menuBar() const
Gibt die Menüleiste für das Hauptfenster zurück. Diese Funktion erstellt eine leere Menüleiste und gibt sie zurück, falls noch keine Menüleiste vorhanden ist.
Wenn Sie möchten, dass alle Fenster einer Mac-Anwendung eine gemeinsame Menüleiste nutzen, sollten Sie diese Funktion nicht zum Erstellen der Menüleiste verwenden, da die hier erstellte Menüleiste „ QMainWindow “ als übergeordnete Instanz hat. Stattdessen müssen Sie eine Menüleiste ohne übergeordnete Instanz erstellen, die dann von allen Mac-Fenstern gemeinsam genutzt werden kann. Erstellen Sie eine Menüleiste ohne übergeordnete Instanz wie folgt:
Siehe auch ` setMenuBar()`.
QWidget *QMainWindow::menuWidget() const
Gibt die Menüleiste für das Hauptfenster zurück. Diese Funktion gibt null zurück, wenn noch keine Menüleiste erstellt wurde.
Siehe auch „ setMenuWidget()“.
void QMainWindow::removeDockWidget(QDockWidget *dockwidget)
Entfernt den „ dockwidget “ aus dem Layout des Hauptfensters und blendet ihn aus. Beachten Sie, dass der „ dockwidget “ nicht gelöscht wird.
void QMainWindow::removeToolBar(QToolBar *toolbar)
Entfernt den „ toolbar “ aus dem Layout des Hauptfensters und blendet ihn aus. Beachten Sie, dass der „ toolbar “ nicht gelöscht wird.
void QMainWindow::removeToolBarBreak(QToolBar *before)
Entfernt eine zuvor vor der durch ` before` angegebenen Symbolleiste eingefügte Symbolleistenunterbrechung.
void QMainWindow::resizeDocks(const QList<QDockWidget *> &docks, const QList<int> &sizes, Qt::Orientation orientation)
Passen Sie die Größe der Dock-Widgets im Listen docks an die entsprechende Größe in Pixeln aus der Liste sizes an. Wenn orientation gleich Qt::Horizontal ist, wird die Breite angepasst, andernfalls die Höhe der Dock-Widgets. Die Größen werden so angepasst, dass die maximalen und minimalen Größen eingehalten werden und die Größe des QMainWindow s selbst nicht verändert wird. Etwaiger zusätzlicher oder fehlender Platz wird entsprechend dem relativen Gewichtsanteil der Größen auf die Widgets verteilt.
Beispiel:
resizeDocks({blueWidget, yellowWidget}, {20 , 40}, Qt::Horizontal);Wenn das blaue und das gelbe Widget auf derselben Ebene verschachtelt sind, werden sie so in der Größe angepasst, dass das yellowWidget doppelt so groß ist wie das blueWidget
Wenn einige Widgets in Registerkarten gruppiert sind, sollte nur ein Widget pro Gruppe angegeben werden. Widgets, die nicht in der Liste aufgeführt sind, werden möglicherweise angepasst, um die Vorgaben einzuhalten.
bool QMainWindow::restoreDockWidget(QDockWidget *dockwidget)
Stellt den Zustand von ` dockwidget ` wieder her, sofern dieser nach dem Aufruf von ` restoreState()` erstellt wurde. Gibt ` true ` zurück, wenn der Zustand wiederhergestellt wurde; andernfalls wird ` false` zurückgegeben.
Siehe auch restoreState() und saveState().
bool QMainWindow::restoreState(const QByteArray &state, int version = 0)
Stellt die „ state “ der Symbolleisten und Dock-Widgets dieses Hauptfensters wieder her. Außerdem werden die Ecken-Einstellungen wiederhergestellt. Die Zahl „ version “ wird mit der in „ state “ gespeicherten Zahl verglichen. Stimmen diese nicht überein, bleibt der Zustand des Hauptfensters unverändert, und diese Funktion gibt „ false “ zurück; andernfalls wird der Zustand wiederhergestellt, und diese Funktion gibt „ true “ zurück.
Um die mit ` QSettings` gespeicherte Geometrie wiederherzustellen, können Sie folgenden Code verwenden:
void MainWindow::readSettings()
{
QSettings settings("MyCompany", "MyApp");
restoreGeometry(settings.value("myWidget/geometry").toByteArray());
restoreState(settings.value("myWidget/windowState").toByteArray());
}Siehe auch „ saveState()“, „ QWidget::saveGeometry()“, „ QWidget::restoreGeometry()“ und „ restoreDockWidget()“.
QByteArray QMainWindow::saveState(int version = 0) const
Speichert den aktuellen Zustand der Symbolleisten und Dock-Widgets dieses Hauptfensters. Dazu gehören auch die Ecken-Einstellungen, die mit ` setCorner()` festgelegt werden können. Die Nummer ` version ` wird als Teil der Daten gespeichert.
Die Eigenschaft „ objectName “ dient zur Identifizierung jedes „ QToolBar “ und „ QDockWidget “. Sie sollten sicherstellen, dass diese Eigenschaft für jedes „ QToolBar “ und „ QDockWidget “, das Sie zur QMainWindow
Um den gespeicherten Zustand wiederherzustellen, übergeben Sie den Rückgabewert und die Nummer von version an restoreState().
Um die Geometrie beim Schließen des Fensters zu speichern, können Sie ein Schließen-Ereignis wie folgt implementieren:
void MyMainWindow::closeEvent(QCloseEvent *event)
{
QSettings settings("MyCompany", "MyApp");
settings.setValue("geometry", saveGeometry());
settings.setValue("windowState", saveState());
QMainWindow::closeEvent(event);
}Siehe auch restoreState(), QWidget::saveGeometry() und QWidget::restoreGeometry().
void QMainWindow::setCentralWidget(QWidget *widget)
Legt das angegebene „ widget “ als zentrales Widget des Hauptfensters fest.
Hinweis: „ QMainWindow “ übernimmt die Verantwortung für den Zeiger „ widget “ und löscht ihn zum geeigneten Zeitpunkt.
Siehe auch ` centralWidget()`.
void QMainWindow::setCorner(Qt::Corner corner, Qt::DockWidgetArea area)
Legt fest, dass das angegebene Dock-Widget „ area “ den angegebenen Bereich „ corner “ einnimmt.
Siehe auch corner().
void QMainWindow::setMenuBar(QMenuBar *menuBar)
Setzt die Menüleiste des Hauptfensters auf „ menuBar “.
Hinweis: „ QMainWindow “ übernimmt die Verantwortung für den Zeiger „ menuBar “ und löscht ihn zum geeigneten Zeitpunkt.
Siehe auch „ menuBar()“.
void QMainWindow::setMenuWidget(QWidget *menuBar)
Setzt die Menüleiste des Hauptfensters auf „ menuBar “.
QMainWindow Übernimmt die Verantwortung für den Zeiger „ menuBar “ und löscht ihn zum geeigneten Zeitpunkt.
Siehe auch ` menuWidget()`.
void QMainWindow::setStatusBar(QStatusBar *statusbar)
Setzt die Statusleiste des Hauptfensters auf „ statusbar “.
Durch das Setzen der Statusleiste auf „ nullptr “ wird diese aus dem Hauptfenster entfernt. Beachten Sie, dass „ QMainWindow “ die Verantwortung für den Zeiger „ statusbar “ übernimmt und diesen zum geeigneten Zeitpunkt löscht.
Siehe auch ` statusBar()`.
void QMainWindow::setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition)
Legt die Registerkartenposition für das angegebene Dock-Widget „ areas “ auf die angegebene Position „ tabPosition “ fest. Standardmäßig werden die Registerkarten aller Dock-Bereiche unten angezeigt.
Hinweis: Die Dock-Option „ VerticalTabs “ überschreibt die durch diese Methode festgelegten Registerkartenpositionen.
Siehe auch „ tabPosition()“ und „ setTabShape()“.
void QMainWindow::splitDockWidget(QDockWidget *first, QDockWidget *second, Qt::Orientation orientation)
Teilt den vom Dock-Widget „ first “ eingenommenen Bereich in zwei Teile, verschiebt das Dock-Widget „ first “ in den ersten Teil und das Dock-Widget „ second “ in den zweiten Teil.
Die Option „ orientation “ legt fest, wie der Bereich aufgeteilt wird: Bei einer Aufteilung nach „ Qt::Horizontal “ wird das zweite Dock-Widget rechts neben dem ersten platziert; bei einer Aufteilung nach „ Qt::Vertical “ wird das zweite Dock-Widget unterhalb des ersten platziert.
Hinweis: Befindet sich „ first “ derzeit in einem angedockten Bereich mit Registerkarten, wird „ second “ als neue Registerkarte hinzugefügt und nicht als Nachbar von „ first “. Dies liegt daran, dass eine einzelne Registerkarte nur ein Dock-Widget enthalten kann.
Hinweis: Das „ Qt::LayoutDirection “ beeinflusst die Reihenfolge der Dock-Widgets in den beiden Teilen des geteilten Bereichs. Wenn die Layout-Richtung von rechts nach links aktiviert ist, wird die Anordnung der Dock-Widgets umgekehrt.
Siehe auch „ tabifyDockWidget()“, „ addDockWidget()“ und „ removeDockWidget()“.
QStatusBar *QMainWindow::statusBar() const
Gibt die Statusleiste für das Hauptfenster zurück. Diese Funktion erstellt eine leere Statusleiste und gibt sie zurück, falls noch keine Statusleiste vorhanden ist.
Siehe auch „ setStatusBar()“.
QTabWidget::TabPosition QMainWindow::tabPosition(Qt::DockWidgetArea area) const
Gibt die Tabulatorposition für „ area “ zurück.
Hinweis: Die Dock-Option „ VerticalTabs “ überschreibt die von dieser Funktion zurückgegebenen Registerkartenpositionen.
Siehe auch „ setTabPosition()“ und „ tabShape()“.
[signal] void QMainWindow::tabifiedDockWidgetActivated(QDockWidget *dockWidget)
Dieses Signal wird ausgelöst, wenn das als Registerkarte dargestellte Dock-Widget durch Auswahl der Registerkarte aktiviert wird. Das aktivierte Dock-Widget wird an ` dockWidget` übergeben.
Siehe auch ` tabifyDockWidget()` und ` tabifiedDockWidgets()`.
QList<QDockWidget *> QMainWindow::tabifiedDockWidgets(QDockWidget *dockwidget) const
Gibt die Dock-Widgets zurück, die zusammen mit „ dockwidget “ in Registerkarten unterteilt sind.
Siehe auch „ tabifyDockWidget()“.
void QMainWindow::tabifyDockWidget(QDockWidget *first, QDockWidget *second)
Verschiebt das Dock-Widget „ second “ über das Dock-Widget „ first “ und erstellt so einen Dock-Bereich mit Registerkarten an der aktuellen Position von „ first “.
Beide Dock-Widgets müssen vor dem Aufruf dieser Funktion mit ` addDockWidget()` zum Hauptfenster hinzugefügt worden sein, und keines von beiden darf bereits mit Registerkarten versehen sein.
Siehe auch tabifiedDockWidgets() und addDockWidget().
QWidget *QMainWindow::takeCentralWidget()
Entfernt das zentrale Widget aus diesem Hauptfenster.
Die Verantwortung für das entfernte Widget wird an den Aufrufer übergeben.
Qt::ToolBarArea QMainWindow::toolBarArea(const QToolBar *toolbar) const
Gibt den „ Qt::ToolBarArea “ für „ toolbar “ zurück. Wenn „ toolbar “ nicht zum Hauptfenster hinzugefügt wurde, gibt diese Funktion „ Qt::NoToolBarArea “ zurück.
Siehe auch addToolBar(), addToolBarBreak() und Qt::ToolBarArea.
bool QMainWindow::toolBarBreak(QToolBar *toolbar) const
Gibt zurück, ob vor dem ` toolbar` ein Toolbar-Umbruch vorhanden ist.
Siehe auch „ addToolBarBreak()“ und „ insertToolBarBreak()“.
[signal] void QMainWindow::toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle)
Dieses Signal wird ausgelöst, wenn der für die Werkzeugschaltflächen im Fenster verwendete Stil geändert wird. Der neue Stil wird in „ toolButtonStyle “ übergeben.
Sie können dieses Signal mit anderen Komponenten verknüpfen, um ein einheitliches Erscheinungsbild Ihrer Anwendung zu gewährleisten.
Siehe auch ` setToolButtonStyle()`.
© 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.