KMainWindow
#include <KMainWindow>
Public Slots | |
void | appHelpActivated () |
virtual void | setCaption (const QString &caption) |
virtual void | setCaption (const QString &caption, bool modified) |
virtual void | setPlainCaption (const QString &caption) |
void | setSettingsDirty () |
Protected Slots | |
void | saveAutoSaveSettings () |
Protected Attributes | |
std::unique_ptr< KMainWindowPrivate > const | d_ptr |
Additional Inherited Members | |
Public Types inherited from QMainWindow | |
enum | DockOption |
Public Types inherited from QWidget | |
enum | RenderFlag |
Public Types inherited from QPaintDevice | |
enum | PaintDeviceMetric |
Public Attributes inherited from QMainWindow | |
AllowNestedDocks | |
AllowTabbedDocks | |
AnimatedDocks | |
typedef | DockOptions |
ForceTabbedDocks | |
GroupedDragging | |
VerticalTabs | |
Public Attributes inherited from QWidget | |
DrawChildren | |
DrawWindowBackground | |
IgnoreMask | |
typedef | RenderFlags |
Public Attributes inherited from QObject | |
typedef | QObjectList |
Public Attributes inherited from QPaintDevice | |
PdmDepth | |
PdmDevicePixelRatio | |
PdmDevicePixelRatioScaled | |
PdmDpiX | |
PdmDpiY | |
PdmHeight | |
PdmHeightMM | |
PdmNumColors | |
PdmPhysicalDpiX | |
PdmPhysicalDpiY | |
PdmWidth | |
PdmWidthMM | |
Detailed Description
KMainWindow represents a top-level main window.
It extends QMainWindow with session management capabilities. For ready-made window functionality and simpler UI management, use KXmlGuiWindow instead.
Define the minimum/maximum height/width of your central widget and KMainWindow will take this into account. For fixed size windows set your main widget to a fixed size. Fixed aspect ratios (QWidget::heightForWidth()) and fixed width widgets are not supported.
Use toolBar() to generate a main toolbar "mainToolBar" or refer to a specific toolbar. For a simpler way to manage your toolbars, use KXmlGuiWindow::setupGUI() instead.
Use setAutoSaveSettings() to automatically save and restore the window geometry and toolbar/menubar/statusbar state when the application is restarted.
Use kRestoreMainWindows() in your main function to restore your windows when the session is restored.
The window state is saved when the application is exited. Reimplement queryClose() to warn the user of unsaved data upon close or exit.
Reimplement saveProperties() / readProperties() or saveGlobalProperties() / readGlobalProperties() to save/restore application-specific state during session management.
Note that session saving is automatically called, session restoring is not, and so it needs to be implemented in your main() function.
See https://develop.kde.org/docs/use/session-managment for more information on session management.
Definition at line 59 of file kmainwindow.h.
Property Documentation
◆ autoSaveGroup
|
read |
Definition at line 66 of file kmainwindow.h.
◆ autoSaveSettings
|
read |
Definition at line 65 of file kmainwindow.h.
◆ hasMenuBar
|
read |
Definition at line 64 of file kmainwindow.h.
Constructor & Destructor Documentation
◆ KMainWindow() [1/2]
|
explicit |
Constructs a main window.
- Parameters
-
parent The parent widget. This is usually nullptr
, but it may also be the window group leader. In that case, the KMainWindow becomes a secondary window.flags Specify the window flags. The default is none.
Note that by default a KMainWindow is created with the Qt::WA_DeleteOnClose attribute set, i.e. it is automatically destroyed when the window is closed. If you do not want this behavior, call
KMainWindows must be created on the heap with 'new', like:
Since KDE Frameworks 5.16, KMainWindow will enter information regarding the application's translators by default, using KAboutData::setTranslator(). This only occurs if no translators are already assigned in KAboutData (see KAboutData::setTranslator() for details – the auto-assignment here uses the same translated strings as specified for that function).
IMPORTANT: For session management and window management to work properly, all main windows in the application should have a different name. Otherwise, KMainWindow will create a unique name, but it's recommended to explicitly pass a window name that will also describe the type of the window. If there can be several windows of the same type, append '#' (hash) to the name, and KMainWindow will replace it with numbers to make the names unique. For example, for a mail client which has one main window showing the mails and folders, and which can also have one or more windows for composing mails, the name for the folders window should be e.g. "mainwindow" and for the composer windows "composer#".
- See also
- KAboutData
Definition at line 207 of file kmainwindow.cpp.
◆ ~KMainWindow()
|
override |
Destructor.
Will also destroy the toolbars and menubar if needed.
Definition at line 429 of file kmainwindow.cpp.
◆ KMainWindow() [2/2]
|
protected |
Definition at line 216 of file kmainwindow.cpp.
Member Function Documentation
◆ appHelpActivated
|
slot |
Opens the help page for the application.
The application name is used as a key to determine what to display and the system will attempt to open <appName>/index.html.
This method is intended for use by a help button in the toolbar or components outside the regular help menu.
Use helpMenu() when you want to provide access to the help system from the help menu.
Example (adding a help button to the first toolbar):
- See also
- helpMenu()
- toolBar()
Definition at line 499 of file kmainwindow.cpp.
◆ applyMainWindowSettings()
|
virtual |
Read settings for statusbar, menubar and toolbar from their respective groups in the config file and apply them.
- Parameters
-
config Config group to read the settings from.
Reimplemented in KXmlGuiWindow.
Definition at line 675 of file kmainwindow.cpp.
◆ autoSaveConfigGroup()
KConfigGroup KMainWindow::autoSaveConfigGroup | ( | ) | const |
- Returns
- The group used for autosaving settings.
Only meaningful if setAutoSaveSettings(const QString&, bool) was called.
Do not use this method if setAutoSaveSettings(const KConfigGroup&, bool) was called.
This can be useful for forcing an apply, e.g. after using KEditToolBar.
- See also
- setAutoSaveSettings()
- autoSaveGroup()
- Since
- 4.1
Definition at line 822 of file kmainwindow.cpp.
◆ autoSaveGroup()
QString KMainWindow::autoSaveGroup | ( | ) | const |
- Returns
- The group used for autosaving settings.
Do not mistake this with autoSaveConfigGroup.
Only meaningful if setAutoSaveSettings(const QString&, bool) was called.
Do not use this method if setAutoSaveSettings(const KConfigGroup&, bool) was called.
This can be useful for forcing a save or an apply, e.g. before and after using KEditToolBar.
- Note
- Prefer saveAutoSaveSettings() for saving or autoSaveConfigGroup() for loading.
- See also
- autoSaveSettings()
- setAutoSaveSettings()
- saveAutoSaveSettings()
- resetAutoSaveSettings()
- autoSaveConfigGroup()
Definition at line 816 of file kmainwindow.cpp.
◆ autoSaveSettings()
bool KMainWindow::autoSaveSettings | ( | ) | const |
- Returns
true
if setAutoSaveSettings() was called,false
by default or if resetAutoSaveSettings() was called.
Definition at line 810 of file kmainwindow.cpp.
◆ canBeRestored()
|
static |
- Parameters
-
numberOfInstances The number of KMainWindow instances in the application.
- Returns
true
if the number of KMainWindow instances of the previous session did contain the requestednumberOfInstances
,false
otherwise.
- See also
- restore()
Definition at line 435 of file kmainwindow.cpp.
◆ classNameOfToplevel()
Useful if your application uses different kinds of top-level windows.
- Returns
- The class name of the top-level window to be restored that corresponds to
instanceNumber
.
- Parameters
-
instanceNumber
- See also
- restore()
Definition at line 449 of file kmainwindow.cpp.
◆ closeEvent()
|
overrideprotectedvirtual |
Reimplemented to autosave settings and call queryClose().
We recommend that you reimplement queryClose() rather than closeEvent(). If you do it anyway, ensure to call the base implementation to keep the feature of autosaving window settings working.
Reimplemented from QWidget.
Definition at line 511 of file kmainwindow.cpp.
◆ dbusName()
QString KMainWindow::dbusName | ( | ) | const |
- Returns
- The path for the exported window's D-Bus object.
- Since
- 4.0.1
Definition at line 993 of file kmainwindow.cpp.
◆ event()
|
overrideprotectedvirtual |
Reimplemented to catch QEvent::Polish in order to adjust the object name if needed, once all constructor code for the main window has run.
Also reimplemented to catch when a QDockWidget is added or removed.
Reimplemented from QMainWindow.
Reimplemented in KXmlGuiWindow.
Definition at line 851 of file kmainwindow.cpp.
◆ hasMenuBar()
bool KMainWindow::hasMenuBar | ( | ) |
- Returns
true
if there is a menubar,false
otherwise.
◆ keyPressEvent()
Reimplemented to open context menus on Shift+F10.
Reimplemented from QWidget.
Definition at line 909 of file kmainwindow.cpp.
◆ memberList()
|
static |
- Returns
- The list of members of the KMainWindow class.
Definition at line 988 of file kmainwindow.cpp.
◆ queryClose()
|
protectedvirtual |
This function is called before the window is closed, either by the user or indirectly by the session manager.
This can be used to prompt the user to save unsaved data before the window is closed.
Example:
- Note
- Do not close the document from within this method, as it may be called by the session manager before the session is saved. If the document is closed before the session save occurs, its location might not be properly saved. In addition, the session shutdown may be canceled, in which case the document should remain open.
- Returns
true
by default,false
according to the reimplementation. Returningfalse
will cancel the closing operation, and if KApplication::sessionSaving() is true, it cancels logout.
- See also
- KApplication::sessionSaving()
Definition at line 553 of file kmainwindow.cpp.
◆ readGlobalProperties()
Reads your application-wide properties.
- Parameters
-
sessionConfig A pointer to the KConfig instance used to load the session data.
Definition at line 562 of file kmainwindow.cpp.
◆ readProperties()
|
inlineprotectedvirtual |
Reads your instance-specific properties.
This function is called indirectly by restore().
- See also
- readGlobalProperties()
Definition at line 560 of file kmainwindow.h.
◆ readPropertiesInternal()
|
protected |
Definition at line 644 of file kmainwindow.cpp.
◆ resetAutoSaveSettings()
void KMainWindow::resetAutoSaveSettings | ( | ) |
Disables the autosave settings feature.
You don't normally need to call this, ever.
- See also
- setAutoSaveSettings()
- autoSaveSettings()
Definition at line 801 of file kmainwindow.cpp.
◆ restore()
bool KMainWindow::restore | ( | int | numberOfInstances, |
bool | show = true ) |
Attempt to restore the top-level widget as defined by numberOfInstances
(1..X).
You should call canBeRestored() first.
If the session did not contain so high a number, the configuration is not changed and false
is returned.
That means clients could simply do the following:
Note that if show
is true
(default), QWidget::show() is called implicitly in restore.
With this you can easily restore all top-level windows of your application.
If your application uses different kinds of top-level windows, then you can use KMainWindow::classNameOfToplevel(n) to determine the exact type before calling the childMW constructor in the example from above.
- Note
- You don't need to deal with this function. Use the kRestoreMainWindows() convenience template function instead!
- Parameters
-
numberOfInstances The number of KMainWindow instances from the last session. show Whether the KMainWindow instances will be visible by default.
- Returns
true
if the session contained the same number of instances as the requested number,false
if the session contained less instances than the requested number, in which case no configuration is changed.
Definition at line 464 of file kmainwindow.cpp.
◆ saveAutoSaveSettings
|
protectedslot |
This slot should only be called in case you reimplement closeEvent() and if you are using the autosave feature.
In all other cases, setSettingsDirty() should be called instead to benefit from the delayed saving.
Example:
Definition at line 840 of file kmainwindow.cpp.
◆ saveGlobalProperties()
Saves your application-wide properties.
- Parameters
-
sessionConfig A pointer to the KConfig instance used to save the session data.
This function is invoked when the session manager requests your application to save its state. It is similar to saveProperties(), but it is only called for the first main window. This is useful to save global state of your application that isn't bound to a particular window.
The default implementation does nothing.
Definition at line 558 of file kmainwindow.cpp.
◆ saveMainWindowSettings()
void KMainWindow::saveMainWindowSettings | ( | KConfigGroup & | config | ) |
Manually save the settings for statusbar, menubar and toolbar to their respective groups in the KConfigGroup config
.
Example:
- Parameters
-
config Config group to save the settings to.
Definition at line 587 of file kmainwindow.cpp.
◆ saveProperties()
|
inlineprotectedvirtual |
Saves your instance-specific properties.
The function is invoked when the session manager requests your application to save its state.
Reimplement this function in child classes.
- Note
- No user interaction is allowed in this function!
Definition at line 540 of file kmainwindow.h.
◆ savePropertiesInternal()
Definition at line 566 of file kmainwindow.cpp.
◆ setAutoSaveSettings() [1/2]
void KMainWindow::setAutoSaveSettings | ( | const KConfigGroup & | group, |
bool | saveWindowSize = true ) |
This is an overloaded function.
This allows the settings to be saved into a different file that does not correspond to that used for KSharedConfig::openConfig().
- Since
- 4.1
Definition at line 782 of file kmainwindow.cpp.
◆ setAutoSaveSettings() [2/2]
void KMainWindow::setAutoSaveSettings | ( | const QString & | groupName = QStringLiteral("MainWindow"), |
bool | saveWindowSize = true ) |
This enables autosave of toolbar/menubar/statusbar settings (and optionally window size).
- Parameters
-
groupName A name that identifies the type of window. You can have several types of window in the same application. If no groupName
is specified, the value defaults to "MainWindow".saveWindowSize Whether to include the window size when saving. true
by default.
If the *bars were modified when the window is closed, saveMainWindowSettings( KConfigGroup(KSharedConfig::openConfig(), groupName) ) will be called.
Typically, you will call setAutoSaveSettings() in your KMainWindow-inherited class constructor, and it will take care of restoring and saving automatically.
By default, this generates an appnamerc ini file as if using default KConfig constructor or KConfig::SimpleConfig.
Make sure you call this after all your *bars have been created.
To make sure that KMainWindow properly obtains the default size of the window you should do the following:
- Remove hardcoded resize() calls in the constructor or main to let the automatic resizing determine the default window size. Hardcoded window sizes will be wrong for users that have big fonts, use different styles, long/small translations, large toolbars, and other factors.
- Put the setAutoSaveSettings() call after all widgets have been created and placed inside the main window (for most apps this means QMainWindow::setCentralWidget())
- QWidget-based objects should overload "virtual QSize sizeHint() const;" to specify a default size.
Definition at line 777 of file kmainwindow.cpp.
◆ setCaption [1/2]
Assigns a KDE compliant caption (window title).
- Parameters
-
caption The string that will be displayed in the window title, before the application name.
- Note
- This function does the same as setPlainCaption().
- Do not include the application name in this string. It will be added automatically according to the KDE standard.
- See also
- setPlainCaption()
Definition at line 479 of file kmainwindow.cpp.
◆ setCaption [2/2]
Makes a KDE compliant caption.
- Parameters
-
caption Your caption. modified Whether the document is modified. This displays an additional sign in the title bar, usually "**".
This is an overloaded function.
- Note
- Do not include the application name in this string. It will be added automatically according to the KDE standard.
Definition at line 484 of file kmainwindow.cpp.
◆ setPlainCaption
Make a plain caption without any modifications.
- Parameters
-
caption The string that will be displayed in the window title, before the application name.
- Note
- This function does the same as setCaption().
- Do not include the application name in this string. It will be added automatically according to the KDE standard.
- See also
- setCaption()
Definition at line 494 of file kmainwindow.cpp.
◆ setSettingsDirty
|
slot |
Tell the main window that it should save its settings when being closed.
This is part of the autosave settings feature.
For everything related to toolbars this happens automatically, but you have to call setSettingsDirty() in the slot that toggles the visibility of the statusbar.
- See also
- saveAutoSaveSettings()
Definition at line 765 of file kmainwindow.cpp.
◆ setStateConfigGroup()
Assigns the config group name for the KConfigGroup returned by stateConfigGroup.
- Parameters
-
configGroup The config group to be assigned. Window size and state are stored in the resulting KConfigGroup when this function is called.
- Note
- If this is used in combination with setAutoSaveSettings, you should call this method first.
- Since
- 5.88
Definition at line 828 of file kmainwindow.cpp.
◆ settingsDirty()
|
protected |
For inherited classes.
Definition at line 771 of file kmainwindow.cpp.
◆ stateConfigGroup()
KConfigGroup KMainWindow::stateConfigGroup | ( | ) | const |
- Returns
- The KConfigGroup used to store state data like window sizes or window state.
The resulting group is invalid if setStateConfig is not called explicitly.
- See also
- KConfigGroup
- Since
- 5.88
Definition at line 834 of file kmainwindow.cpp.
◆ toolBar()
This is useful to both call specific toolbars that have been created or to generate a default one upon call.
This refers to toolbars created dynamically from the XML UI framework via KConfig or appnameui.rc.
If the toolbar does not exist, one will be created.
- Parameters
-
name The internal name of the toolbar. If no name is specified, "mainToolBar" is assumed.
- Returns
- A pointer to the toolbar with the specified name.
- See also
- toolBars()
Definition at line 958 of file kmainwindow.cpp.
◆ toolBars()
- Returns
- A list of all toolbars for this window
Definition at line 974 of file kmainwindow.cpp.
Member Data Documentation
◆ d_ptr
|
protected |
Definition at line 629 of file kmainwindow.h.
The documentation for this class was generated from the following files:
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:21:12 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.