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.
Konstante | Wert | Beschreibung |
---|---|---|
QMainWindow::AnimatedDocks | 0x01 | Identisch mit der Eigenschaft animated. |
QMainWindow::AllowNestedDocks | 0x02 | Identisch mit der Eigenschaft dockNestingEnabled. |
QMainWindow::AllowTabbedDocks | 0x04 | Der 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::ForceTabbedDocks | 0x08 | Jeder 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::VerticalTabs | 0x10 | Die 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::GroupedDragging | 0x20 | Wenn 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.
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, 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:
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 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.