Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
mainwindow.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4#ifndef MAINWINDOW_H
5#define MAINWINDOW_H
6
7#include <QtCore/qlist.h>
8
9#include <QtWidgets/qmainwindow.h>
10#include <QtWidgets/qmdiarea.h>
11
12QT_BEGIN_NAMESPACE
13
14class QDesignerActions;
19
21class QToolBar;
22class QMdiArea;
23class QMenu;
24class QByteArray;
25class QMimeData;
26
27/* A main window that has a configureable policy on handling close events. If
28 * enabled, it can forward the close event to external handlers.
29 * Base class for windows that can switch roles between tool windows
30 * and main windows. */
31
33{
36protected:
37 explicit MainWindowBase(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::Window);
38
39public:
41 /* Always accept close events */
43 /* Emit a signal with the event, have it handled elsewhere */
45
46 CloseEventPolicy closeEventPolicy() const { return m_policy; }
47 void setCloseEventPolicy(CloseEventPolicy pol) { m_policy = pol; }
48
49 static QList<QToolBar *> createToolBars(const QDesignerActions *actions, bool singleToolBar);
50 static QString mainWindowTitle();
51
52 // Use the minor Qt version as settings versions to avoid conflicts
53 static int settingsVersion();
54
57
58protected:
59 void closeEvent(QCloseEvent *e) override;
60private:
62};
63
64/* An MdiArea that listens for desktop file manager file drop events and emits
65 * a signal to open a dropped file. */
66class DockedMdiArea : public QMdiArea
67{
70public:
71 explicit DockedMdiArea(const QString &extension, QWidget *parent = nullptr);
72
74 void fileDropped(const QString &);
75
76protected:
77 bool event (QEvent *event) override;
78
79private:
80 QStringList uiFiles(const QMimeData *d) const;
81
82 const QString m_extension;
83};
84
85// Convenience class that manages a QtToolBarManager and an action to trigger
86// it on a mainwindow.
87class ToolBarManager : public QObject
88{
89 Q_OBJECT
90 Q_DISABLE_COPY_MOVE(ToolBarManager)
91public:
96 const QList<QToolBar *> &toolbars,
98
99 QByteArray saveState(int version = 0) const;
100 bool restoreState(const QByteArray &state, int version = 0);
101
102private slots:
103 void configureToolBars();
104 void updateToolBarMenu();
105
106private:
107 QMainWindow *m_configureableMainWindow;
108 QWidget *m_parent;
109 QMenu *m_toolBarMenu;
110 QtToolBarManager *m_manager;
111 QAction *m_configureAction;
112 QList<QToolBar *> m_toolbars;
113};
114
115/* Main window to be used for docked mode */
117 Q_OBJECT
118 Q_DISABLE_COPY_MOVE(DockedMainWindow)
119public:
122
124 QMenu *toolBarMenu,
125 const DesignerToolWindowList &toolWindows);
126
127 // Create a MDI subwindow for the form.
128 QMdiSubWindow *createMdiSubWindow(QWidget *fw, Qt::WindowFlags f, const QKeySequence &designerCloseActionShortCut);
129
130 QMdiArea *mdiArea() const;
131
132 DockWidgetList addToolWindows(const DesignerToolWindowList &toolWindows);
133
134 void restoreSettings(const QDesignerSettings &s, const DockWidgetList &dws, const QRect &desktopArea);
135 void saveSettings(QDesignerSettings &) const;
136
137signals:
138 void fileDropped(const QString &);
140
141private slots:
143
144private:
145 ToolBarManager *m_toolBarManager = nullptr;
146};
147
148QT_END_NAMESPACE
149
150#endif // MAINWINDOW_H
void restoreSettings(const QDesignerSettings &s, const DockWidgetList &dws, const QRect &desktopArea)
DockedMainWindow(QDesignerWorkbench *wb, QMenu *toolBarMenu, const DesignerToolWindowList &toolWindows)
DockWidgetList addToolWindows(const DesignerToolWindowList &toolWindows)
void saveSettings(QDesignerSettings &) const
QMdiSubWindow * createMdiSubWindow(QWidget *fw, Qt::WindowFlags f, const QKeySequence &designerCloseActionShortCut)
QMdiArea * mdiArea() const
void formWindowActivated(QDesignerFormWindow *)
bool event(QEvent *event) override
static QString mainWindowTitle()
CloseEventPolicy closeEventPolicy() const
Definition mainwindow.h:46
void closeEvent(QCloseEvent *e) override
This event handler is called with the given event when Qt receives a window close request for a top-l...
static int settingsVersion()
static QList< QToolBar * > createToolBars(const QDesignerActions *actions, bool singleToolBar)
void setCloseEventPolicy(CloseEventPolicy pol)
Definition mainwindow.h:47
QActionGroup * helpActions() const
QActionGroup * fileActions() const
QActionGroup * editActions() const
QActionGroup * formActions() const
QActionGroup * toolActions() const
QActionGroup * windowActions() const
QByteArray toolBarsState(UIMode mode) const
void saveGeometryFor(const QWidget *w)
QDesignerActions * actionManager() const
friend class QWidget
Definition qpainter.h:421
The QtToolBarDialog class provides a dialog for customizing toolbars.
void setToolBarManager(QtToolBarManager *toolBarManager)
Connects the toolbar dialog to the given toolBarManager.
The QtToolBarManager class provides toolbar management for main windows.
QByteArray saveState(int version=0) const
Saves the state of the toolbar manager's toolbars.
bool restoreState(const QByteArray &state, int version=0)
Restores the saved state of the toolbar manager's toolbars.
void setMainWindow(QMainWindow *mainWindow)
Sets the main window upon which the toolbar manager operates, to be the given mainWindow.
QByteArray saveState(int version=0) const
bool restoreState(const QByteArray &state, int version=0)
@ DockedMode
#define qDesigner
Definition qdesigner.h:12
static void addActionsToToolBar(const ActionList &actions, QToolBar *t)
static void addActionsToToolBarManager(const ActionList &al, const QString &title, QtToolBarManager *tbm)
static QToolBar * createToolBar(const QString &title, const QString &objectName, const ActionList &actions)
bool toolBarTitleLessThan(const QToolBar *t1, const QToolBar *t2)