QMainWindow Class

Die Klasse QMainWindow stellt ein Hauptanwendungsfenster zur Verfügung. Mehr...

Kopfzeile: #include <QMainWindow>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Vererbt: 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)

Reimplementierte geschützte Funktionen

virtual void contextMenuEvent(QContextMenuEvent *event) override
virtual bool event(QEvent *event) override

Detaillierte Beschreibung

Qt Hauptfenster-Framework

Ein Hauptfenster bietet einen Rahmen für den Aufbau der Benutzeroberfläche einer Anwendung. Qt verfügt über QMainWindow und die zugehörigen Klassen für die Verwaltung des Hauptfensters. QMainWindow hat sein eigenes Layout, dem Sie QToolBars, QDockWidgets, QMenuBar und QStatusBar hinzufügen können. Das Layout hat einen zentralen Bereich, der von jeder Art von Widget belegt werden kann. Ein Bild des Layouts ist unten zu sehen.

Erstellen von Hauptfensterkomponenten

Ein zentrales Widget ist in der Regel ein Standard-Qt-Widget wie QTextEdit oder QGraphicsView. Für fortgeschrittene Anwendungen können auch benutzerdefinierte Widgets verwendet werden. Sie legen das zentrale Widget mit setCentralWidget() fest.

Hauptfenster haben entweder eine Schnittstelle für einzelne (SDI) oder mehrere (MDI) Dokumente. Sie erstellen MDI-Anwendungen in Qt, indem Sie ein QMdiArea als zentrales Widget verwenden.

Wir werden nun jedes der anderen Widgets untersuchen, die zu einem Hauptfenster hinzugefügt werden können. Wir geben Beispiele, wie man sie erstellt und hinzufügt.

Menüs erstellen

Qt implementiert Menüs in QMenu und QMainWindow speichert sie in einem QMenuBar. QActions werden zu den Menüs hinzugefügt, die sie als Menüpunkte anzeigen.

Sie können neue Menüs zur Menüleiste des Hauptfensters hinzufügen, indem Sie menuBar() aufrufen, das die QMenuBar für das Fenster zurückgibt, und dann ein Menü mit QMenuBar::addMenu() hinzufügen.

QMainWindow wird mit einer Standard-Menüleiste geliefert, aber Sie können auch selbst eine mit setMenuBar() einstellen. Wenn Sie eine eigene Menüleiste implementieren möchten (d. h. nicht das QMenuBar Widget verwenden), können Sie sie mit setMenuWidget() einstellen.

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 erzeugt ein Menü mit den ankreuzbaren Aktionen aus den Dock-Widgets und Symbolleisten. Sie können createPopupMenu() für ein benutzerdefiniertes Menü neu implementieren.

Erstellen von Symbolleisten

Symbolleisten sind in der Klasse QToolBar implementiert. Sie fügen eine Symbolleiste mit addToolBar() zu einem Hauptfenster hinzu.

Sie steuern die Anfangsposition von Symbolleisten, indem Sie sie einem bestimmten Qt::ToolBarArea zuweisen. Sie können einen Bereich durch Einfügen eines Symbolleistenumbruchs - vergleichbar mit einem Zeilenumbruch bei der Textbearbeitung - mit addToolBarBreak() oder insertToolBarBreak() teilen. Sie können die Platzierung durch den Benutzer auch mit QToolBar::setAllowedAreas() und QToolBar::setMovable() einschränken.

Die Größe der Symbolleistensymbole kann mit iconSize() abgefragt werden. Die Größen sind plattformabhängig; eine feste Größe können Sie mit setIconSize() einstellen. Das Aussehen aller Schaltflächen in den Symbolleisten können Sie mit setToolButtonStyle() ä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 sind in der Klasse QDockWidget implementiert. Ein Dock-Widget ist ein Fenster, das an das Hauptfenster angedockt werden kann. Sie fügen Dock-Widgets mit addDockWidget() zu einem Hauptfenster hinzu.

Es gibt vier Docking-Widget-Bereiche, die durch das Qt::DockWidgetArea enum angegeben werden: links, rechts, oben und unten. Sie können mit setCorner() festlegen, welcher Docking-Widget-Bereich die Ecken einnehmen soll, in denen sich die Bereiche überschneiden. Standardmäßig kann jeder Bereich nur eine Reihe (vertikal oder horizontal) von Andock-Widgets enthalten, aber wenn Sie die Verschachtelung mit setDockNestingEnabled() aktivieren, können Andock-Widgets in jeder Richtung hinzugefügt werden.

Zwei Docking-Widgets können auch übereinander gestapelt werden. Mit QTabBar wird dann ausgewählt, welches der Widgets angezeigt werden soll.

Anhand eines Beispiels wird gezeigt, wie Sie Dock-Widgets erstellen und zu einem Hauptfenster hinzufügen können:

    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, aber eine solche wird beim ersten Aufruf von statusBar() (der die Statusleiste des Hauptfensters zurückgibt) erstellt. Siehe QStatusBar für Informationen über die Verwendung dieser Funktion.

Speichern des Zustands

QMainWindow kann den Zustand seines Layouts mit saveState() speichern; er kann später mit restoreState() abgerufen werden. Gespeichert werden die Position und Größe (relativ zur Größe des Hauptfensters) der Symbolleisten und Dock-Widgets.

Siehe auch QMenuBar, QToolBar, QStatusBar, QDockWidget, und Menüs Beispiel.

Dokumentation der Mitgliedstypen

enum QMainWindow::DockOption
flags QMainWindow::DockOptions

Diese Aufzählung enthält Flags, die das Andockverhalten von QMainWindow festlegen.

KonstanteWertBeschreibung
QMainWindow::AnimatedDocks0x01Identisch mit der Eigenschaft animated.
QMainWindow::AllowNestedDocks0x02Identisch mit der Eigenschaft dockNestingEnabled.
QMainWindow::AllowTabbedDocks0x04Der Benutzer kann ein Dock-Widget "über" einem anderen ablegen. Die beiden Widgets werden gestapelt und es wird eine Registerkartenleiste angezeigt, mit der das sichtbare Widget ausgewählt werden kann.
QMainWindow::ForceTabbedDocks0x08Jeder Andockbereich enthält einen einzelnen Stapel von Dock-Widgets mit Registerkarten. Mit anderen Worten, Docking-Widgets können nicht nebeneinander in einem Docking-Bereich platziert werden. Wenn diese Option gesetzt ist, hat AllowNestedDocks keine Wirkung.
QMainWindow::VerticalTabs0x10Die beiden vertikalen Dockbereiche an den Seiten des Hauptfensters zeigen ihre Registerkarten vertikal an. Wenn diese Option nicht gesetzt ist, zeigen alle Dockbereiche ihre Registerkarten unten an. Dies impliziert AllowTabbedDocks. Siehe auch setTabPosition().
QMainWindow::GroupedDragging0x20Wenn Sie die Titelleiste eines Docks ziehen, werden alle Registerkarten, die mit diesem Dock verbunden sind, mitgezogen. Impliziert AllowTabbedDocks. Funktioniert nicht gut, wenn einige QDockWidgets Einschränkungen haben, in welchem Bereich sie erlaubt sind. (Dieser Enum-Wert wurde in Qt 5.6 hinzugefügt.)

Diese Optionen steuern nur, wie Dock-Widgets in einem QMainWindow abgelegt werden können. Sie ordnen die Dock-Widgets nicht neu an, um den angegebenen Optionen zu entsprechen. Aus diesem Grund sollten sie gesetzt werden, bevor irgendwelche Dock-Widgets zum Hauptfenster hinzugefügt werden. Ausnahmen hiervon sind die Optionen AnimatedDocks und VerticalTabs, die jederzeit gesetzt werden können.

Der Typ DockOptions ist ein Typedef für QFlags<DockOption>. Er speichert eine ODER-Kombination von DockOption-Werten.

Dokumentation der Eigenschaft

animated : bool

Diese Eigenschaft legt fest, ob die Handhabung von Andockwidgets und Symbolleisten animiert ist

Wenn ein Andock-Widget oder eine Symbolleiste über das Hauptfenster gezogen wird, passt das Hauptfenster seinen Inhalt an, um anzuzeigen, wo das Andock-Widget oder die Symbolleiste angedockt wird, wenn es fallen gelassen wird. Das Setzen dieser Eigenschaft bewirkt, dass QMainWindow seinen Inhalt in einer sanften Animation bewegt. Wird diese Eigenschaft gelöscht, rastet der Inhalt an der neuen Position ein.

Standardmäßig ist diese Eigenschaft eingestellt. Sie kann gelöscht werden, wenn das Hauptfenster Widgets enthält, die ihre Größe nur langsam ändern oder sich selbst neu malen.

Das Setzen dieser Eigenschaft ist identisch mit dem Setzen der Option AnimatedDocks mit setDockOptions().

Zugriffsfunktionen:

bool isAnimated() const
void setAnimated(bool enabled)

dockNestingEnabled : bool

Diese Eigenschaft legt fest, ob Docks verschachtelt werden können

Wenn diese Eigenschaft false lautet, können Dockbereiche nur eine einzige Reihe (horizontal oder vertikal) von Dock-Widgets enthalten. Wenn diese Eigenschaft true lautet, kann der von einem Dock-Widget belegte Bereich in beide Richtungen geteilt werden, um weitere Dock-Widgets aufzunehmen.

Dock-Schachtelungen sind nur in Anwendungen notwendig, die viele Dock-Widgets enthalten. Es gibt dem Benutzer mehr Freiheit bei der Organisation seines Hauptfensters. Die Verschachtelung von Docks führt jedoch 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 Dockbereich platziert werden kann.

Das Setzen dieser Eigenschaft ist identisch mit dem Setzen der Option AllowNestedDocks mit setDockOptions().

Zugriffsfunktionen:

bool isDockNestingEnabled() const
void setDockNestingEnabled(bool enabled)

dockOptions : DockOptions

Diese Eigenschaft bestimmt das Andockverhalten von QMainWindow

Der Standardwert ist AnimatedDocks | AllowTabbedDocks.

Zugriffsfunktionen:

QMainWindow::DockOptions dockOptions() const
void setDockOptions(QMainWindow::DockOptions options)

documentMode : bool

Diese Eigenschaft gibt an, ob die Registerkartenleiste für Dockwidgets 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 Symbolleistensymbole in diesem Hauptfenster.

Der Standardwert ist die Standardgröße der Symbolleistensymbole des GUI-Stils. Beachten Sie, dass die verwendeten Icons mindestens diese Größe haben müssen, da die Icons nur 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 im Dock 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 Schaltflächen in der Symbolleiste dieses Hauptfensters.

Wenn Sie möchten, dass der Stil der Symbolleistenschaltflä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 nur das Symbol.

Die Standardeinstellung ist Qt::ToolButtonIconOnly.

Zugriffsfunktionen:

Qt::ToolButtonStyle toolButtonStyle() const
void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle)

unifiedTitleAndToolBarOnMac : bool

Diese Eigenschaft legt fest, ob das Fenster das einheitliche Aussehen von Titel und Symbolleiste unter macOS 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. Dies schließt QOpenGLWidget ein.
  • Die Verwendung von andockbaren oder beweglichen Symbolleisten kann zu Malfehlern führen und wird nicht empfohlen

Zugriffsfunktionen:

bool unifiedTitleAndToolBarOnMac() const
void setUnifiedTitleAndToolBarOnMac(bool set)

Member Function Dokumentation

[explicit] QMainWindow::QMainWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

Konstruiert ein QMainWindow mit der angegebenen parent und dem angegebenen Widget flags.

QMainWindow setzt selbst das Flag Qt::Window und wird daher immer als Top-Level-Widget erstellt.

[virtual noexcept] QMainWindow::~QMainWindow()

Zerstört das Hauptfenster.

void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget)

Fügt die angegebene dockwidget zu der angegebenen area hinzu.

void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget, Qt::Orientation orientation)

Fügt dockwidget in das angegebene area in der durch orientation angegebenen Richtung ein.

void QMainWindow::addToolBar(Qt::ToolBarArea area, QToolBar *toolbar)

Fügt das toolbar in das angegebene area in diesem Hauptfenster ein. Die toolbar wird an das Ende des aktuellen Symbolleistenblocks (d.h. der Zeile) gesetzt. Wenn das Hauptfenster bereits toolbar verwaltet, wird die Symbolleiste nur nach area verschoben.

Siehe auch insertToolBar(), addToolBarBreak(), und insertToolBarBreak().

void QMainWindow::addToolBar(QToolBar *toolbar)

Dies ist eine überladene Funktion.

Äquivalent zum Aufruf von addToolBar(Qt::TopToolBarArea, toolbar)

QToolBar *QMainWindow::addToolBar(const QString &title)

Dies ist eine überladene Funktion.

Erzeugt ein Objekt QToolBar, wobei der Fenstertitel auf title gesetzt wird, und fügt es in den oberen Bereich der Symbolleiste ein.

Siehe auch setWindowTitle().

void QMainWindow::addToolBarBreak(Qt::ToolBarArea area = Qt::TopToolBarArea)

Fügt eine Unterbrechung der Symbolleiste auf der angegebenen Seite area nach allen anderen vorhandenen Objekten 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 nicht gesetzt wurde.

Siehe auch setCentralWidget().

[override virtual protected] void QMainWindow::contextMenuEvent(QContextMenuEvent *event)

Reimplements: QWidget::contextMenuEvent(QContextMenuEvent *event).

Qt::DockWidgetArea QMainWindow::corner(Qt::Corner corner) const

Gibt den Bereich des Dock-Widgets zurück, der den angegebenen corner belegt.

Siehe auch setCorner().

[virtual] QMenu *QMainWindow::createPopupMenu()

Gibt ein Popup-Menü mit ankreuzbaren Einträgen für die im Hauptfenster vorhandenen Symbolleisten und Dock-Widgets zurück. Wenn keine Symbolleisten und Dock-Widgets vorhanden sind, gibt diese Funktion nullptr zurück.

Standardmäßig wird diese Funktion vom Hauptfenster aufgerufen, wenn der Benutzer ein Kontextmenü aktiviert, typischerweise durch Rechtsklick auf eine Symbolleiste oder ein Dock-Widget.

Wenn Sie ein benutzerdefiniertes Popup-Menü erstellen möchten, implementieren Sie diese Funktion neu und geben ein neu erstelltes Popup-Menü zurück. Das Eigentum an dem Popup-Menü wird an den Aufrufer übertragen.

Siehe auch addDockWidget(), addToolBar(), und menuBar().

Qt::DockWidgetArea QMainWindow::dockWidgetArea(QDockWidget *dockwidget) const

Gibt die 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)

Reimplements: QWidget::event(QEvent *Event).

[signal] void QMainWindow::iconSizeChanged(const QSize &iconSize)

Dieses Signal wird ausgegeben, wenn die Größe der im Fenster verwendeten Icons geändert wird. Die neue Symbolgröße wird in iconSize übergeben.

Sie können dieses Signal mit anderen Komponenten verbinden, um ein einheitliches Erscheinungsbild Ihrer Anwendung zu gewährleisten.

Siehe auch setIconSize().

void QMainWindow::insertToolBar(QToolBar *before, QToolBar *toolbar)

Fügt toolbar in den Bereich ein, der von der Symbolleiste before belegt wird, so dass sie vor dieser erscheint. Bei normalem Links-nach-Rechts-Layout bedeutet dies zum Beispiel, dass toolbar links von der durch before angegebenen Symbolleiste in einem horizontalen Symbolleistenbereich erscheint.

Siehe auch insertToolBarBreak(), addToolBar(), und addToolBarBreak().

void QMainWindow::insertToolBarBreak(QToolBar *before)

Fügt eine Unterbrechung der Symbolleiste vor der durch before angegebenen Symbolleiste ein.

Gibt die Menüleiste für das Hauptfenster zurück. Diese Funktion erstellt eine leere Menüleiste und gibt sie zurück, wenn die Menüleiste nicht existiert.

Wenn Sie möchten, dass alle Fenster in einem Mac-Programm eine gemeinsame Menüleiste haben, sollten Sie diese Funktion nicht verwenden, da die hier erstellte Menüleiste diese QMainWindow als übergeordnetes Fenster hat. Stattdessen müssen Sie eine Menüleiste erstellen, die kein übergeordnetes Element hat und die Sie dann für alle Mac-Fenster freigeben können. Erstellen Sie auf diese Weise eine übergeordnete Menüleiste:

QMenuBar *menuBar = new QMenuBar(nullptr);

Siehe auch setMenuBar().

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 dockwidget aus dem Layout des Hauptfensters und blendet es aus. Beachten Sie, dass dockwidget nicht gelöscht wird.

void QMainWindow::removeToolBar(QToolBar *toolbar)

Entfernt toolbar aus dem Layout des Hauptfensters und blendet es aus. Beachten Sie, dass toolbar nicht gelöscht wird.

void QMainWindow::removeToolBarBreak(QToolBar *before)

Entfernt eine Symbolleistenunterbrechung, die vor der durch before angegebenen Symbolleiste eingefügt wurde.

void QMainWindow::resizeDocks(const QList<QDockWidget *> &docks, const QList<int> &sizes, Qt::Orientation orientation)

Passt die Größe der Dock-Widgets in der Liste docks an die entsprechende Größe in Pixeln aus der Liste sizes an. Wenn orientation gleich Qt::Horizontal ist, wird die Breite, ansonsten die Höhe der Dock-Widgets angepasst. Die Größen werden so angepasst, dass die Maximal- und Minimalgrößen eingehalten werden und die Größe von QMainWindow selbst nicht verändert wird. Jeglicher zusätzliche/fehlende Platz wird unter den Widgets entsprechend dem relativen Gewicht der Größen verteilt.

Beispiel:

    resizeDocks({blueWidget, yellowWidget}, {20 , 40}, Qt::Horizontal);

Wenn das blaue und das gelbe Widget auf derselben Ebene verschachtelt sind, wird ihre Größe so angepasst, dass das gelbe Widget doppelt so groß ist wie das blaue Widget.

Wenn einige Widgets in Registerkarten gruppiert sind, sollte nur ein Widget pro Gruppe angegeben werden. Widgets, die nicht in der Liste enthalten sind, können geändert werden, um die Beschränkungen einzuhalten.

bool QMainWindow::restoreDockWidget(QDockWidget *dockwidget)

Stellt den Zustand von dockwidget wieder her, wenn es nach dem Aufruf von restoreState() erstellt wurde. Gibt true zurück, wenn der Zustand wiederhergestellt wurde; andernfalls false.

Siehe auch restoreState() und saveState().

bool QMainWindow::restoreState(const QByteArray &state, int version = 0)

Stellt die state für die Symbolleisten und Dockwidgets dieses Hauptfensters wieder her. Stellt auch die Eckeinstellungen wieder her. Die Nummer version wird mit der in state gespeicherten Nummer verglichen. Wenn sie nicht übereinstimmen, 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 Code wie den folgenden 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 Dockwidgets dieses Hauptfensters. Dazu gehören auch die Eckeinstellungen, die mit setCorner() gesetzt werden können. Die Nummer version wird als Teil der Daten gespeichert.

Die Eigenschaft objectName wird verwendet, um jedes QToolBar und QDockWidget zu identifizieren. Sie sollten sicherstellen, dass diese Eigenschaft für jedes QToolBar und QDockWidget, das Sie dem Hauptfenster hinzufügen, eindeutig ist. QMainWindow

Um den gespeicherten Zustand wiederherzustellen, übergeben Sie den Rückgabewert und die Nummer version an restoreState().

Um die Geometrie zu speichern, wenn das Fenster geschlossen wird, können Sie ein close-Ereignis wie dieses 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)

Setzt das angegebene widget auf das zentrale Widget des Hauptfensters.

Hinweis: QMainWindow übernimmt den Besitz des Zeigers widget und löscht ihn zu gegebener Zeit.

Siehe auch centralWidget().

void QMainWindow::setCorner(Qt::Corner corner, Qt::DockWidgetArea area)

Setzt das angegebene Dock-Widget area so, dass es den angegebenen corner belegt.

Siehe auch corner().

void QMainWindow::setMenuBar(QMenuBar *menuBar)

Setzt die Menüleiste für das Hauptfenster auf menuBar.

Hinweis: QMainWindow übernimmt den Zeiger menuBar und löscht ihn zu gegebener Zeit.

Siehe auch menuBar().

void QMainWindow::setMenuWidget(QWidget *menuBar)

Setzt die Menüleiste für das Hauptfenster auf menuBar.

QMainWindow übernimmt den Zeiger menuBar und löscht ihn zu gegebener Zeit.

Siehe auch menuWidget().

void QMainWindow::setStatusBar(QStatusBar *statusbar)

Setzt die Statusleiste für das Hauptfenster auf statusbar.

Wenn Sie die Statusleiste auf nullptr setzen, wird sie aus dem Hauptfenster entfernt. Beachten Sie, dass QMainWindow den Zeiger statusbar übernimmt und ihn zu gegebener Zeit löscht.

Siehe auch statusBar().

void QMainWindow::setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition)

Setzt die Registerkartenposition für das angegebene Dock-Widget areas auf die angegebene tabPosition. Standardmäßig zeigen alle Dockbereiche ihre Registerkarten am unteren Rand an.

Hinweis: Die Option VerticalTabs dock setzt die mit dieser Methode eingestellten Tabulatorpositionen außer Kraft.

Siehe auch tabPosition() und setTabShape().

void QMainWindow::splitDockWidget(QDockWidget *first, QDockWidget *second, Qt::Orientation orientation)

Teilt den vom Andock-Widget first abgedeckten Bereich in zwei Teile, verschiebt das Andock-Widget first in den ersten Teil und verschiebt das Andock-Widget second in den zweiten Teil.

Die orientation gibt an, wie der Bereich aufgeteilt wird: Eine Qt::Horizontal Teilung platziert das zweite Dock-Widget rechts vom ersten; eine Qt::Vertical Teilung platziert das zweite Dock-Widget unter das erste.

Hinweis: Wenn sich first derzeit in einem angedockten Bereich mit Registerkarten befindet, wird second als neue Registerkarte hinzugefügt, nicht als Nachbar von first. Dies liegt daran, dass eine einzelne Registerkarte nur ein Andock-Widget enthalten kann.

Hinweis: Qt::LayoutDirection beeinflusst die Reihenfolge der Docking-Widgets in den beiden Teilen des geteilten Bereichs. Wenn die Layout-Richtung von rechts nach links aktiviert ist, wird die Platzierung der Dock-Widgets umgedreht.

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, wenn die Statusleiste nicht existiert.

Siehe auch setStatusBar().

QTabWidget::TabPosition QMainWindow::tabPosition(Qt::DockWidgetArea area) const

Gibt die Tabulatorposition für area zurück.

Hinweis: Die Option VerticalTabs dock setzt die von dieser Funktion zurückgegebenen Tabulatorpositionen außer Kraft.

Siehe auch setTabPosition() und tabShape().

[signal] void QMainWindow::tabifiedDockWidgetActivated(QDockWidget *dockWidget)

Dieses Signal wird ausgegeben, wenn das Dock-Widget mit Registerkarten durch Auswahl der Registerkarte aktiviert wird. Das aktivierte Dock-Widget wird in dockWidget übergeben.

Siehe auch tabifyDockWidget() und tabifiedDockWidgets().

QList<QDockWidget *> QMainWindow::tabifiedDockWidgets(QDockWidget *dockwidget) const

Gibt die Dock-Widgets zurück, die zusammen mit dockwidget tabelliert sind.

Siehe auch tabifyDockWidget().

void QMainWindow::tabifyDockWidget(QDockWidget *first, QDockWidget *second)

Verschiebt das Andock-Widget second über das Andock-Widget first, wodurch ein angedockter Bereich mit Registerkarten im Hauptfenster entsteht.

Siehe auch tabifiedDockWidgets().

QWidget *QMainWindow::takeCentralWidget()

Entfernt das zentrale Widget aus diesem Hauptfenster.

Der Eigentümer des entfernten Widgets wird an den Aufrufer übergeben.

Qt::ToolBarArea QMainWindow::toolBarArea(const QToolBar *toolbar) const

Gibt die 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 es vor toolbar eine Unterbrechung der Symbolleiste gibt.

Siehe auch addToolBarBreak() und insertToolBarBreak().

[signal] void QMainWindow::toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle)

Dieses Signal wird ausgegeben, 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 verbinden, um ein einheitliches Erscheinungsbild Ihrer Anwendung zu gewährleisten.

Siehe auch setToolButtonStyle().

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.