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
qtoolbararealayout_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QTOOLBARAREALAYOUT_P_H
6#define QTOOLBARAREALAYOUT_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtWidgets/private/qtwidgetsglobal_p.h>
20#include <QtWidgets/private/qwidgetanimator_p.h>
21#include "qmenu_p.h"
22#include <QList>
23#include <QSize>
24#include <QRect>
25#include <array>
26#include <optional>
27
29
30QT_BEGIN_NAMESPACE
31
32class QToolBar;
33class QLayoutItem;
34class QMainWindow;
35class QStyleOptionToolBar;
36
38{
39public:
40 QToolBarAreaLayoutItem(QLayoutItem *item = nullptr)
41 : widgetItem(item), pos(0), size(-1), preferredSize(-1), gap(false) {}
42
43 bool skip() const;
44 QSize minimumSize() const;
45 QSize sizeHint() const;
46 QSize realSizeHint() const;
47
48 void resize(Qt::Orientation o, int newSize)
49 {
50 newSize = qMax(pick(o, minimumSize()), newSize);
51 int sizeh = pick(o, sizeHint());
52 if (newSize == sizeh) {
53 preferredSize = -1;
54 size = sizeh;
55 } else {
56 preferredSize = newSize;
57 }
58 }
59
60 void extendSize(Qt::Orientation o, int extent)
61 {
62 int newSize = qMax(pick(o, minimumSize()), (preferredSize > 0 ? preferredSize : pick(o, sizeHint())) + extent);
63 int sizeh = pick(o, sizeHint());
64 if (newSize == sizeh) {
65 preferredSize = -1;
66 size = sizeh;
67 } else {
68 preferredSize = newSize;
69 }
70 }
71
72 QLayoutItem *widgetItem;
73 int pos;
74 int size;
76 bool gap;
77};
79
81{
82public:
83 QToolBarAreaLayoutLine() { } // for QList, don't use
84 QToolBarAreaLayoutLine(Qt::Orientation orientation);
85
86 QSize sizeHint() const;
87 QSize minimumSize() const;
88
89 void fitLayout();
90 bool skip() const;
91
94
96};
98
100{
101public:
102 QToolBarAreaLayoutInfo(QInternal::DockPosition pos = QInternal::TopDock);
103
104 QSize sizeHint() const;
105 QSize minimumSize() const;
106
107 void fitLayout();
108
109 QLayoutItem *insertToolBar(QToolBar *before, QToolBar *toolBar);
110 void insertItem(QToolBar *before, QLayoutItem *item);
111 void removeToolBar(QToolBar *toolBar);
112 void insertToolBarBreak(QToolBar *before);
113 void removeToolBarBreak(QToolBar *before);
114 void moveToolBar(QToolBar *toolbar, int pos);
115
116 QList<int> gapIndex(const QPoint &pos, int *maxDistance) const;
117 bool insertGap(const QList<int> &path, QLayoutItem *item);
118 void clear();
119 QRect itemRect(const QList<int> &path) const;
120 int distance(const QPoint &pos) const;
121
126 bool dirty;
127};
129
131{
132public:
134 const QMainWindow *mainWindow;
137
138 QToolBarAreaLayout(const QMainWindow *win);
139
141
142 QSize minimumSize(const QSize &centerMin) const;
143 QRect rectHint(const QRect &r) const;
144 QSize sizeHint(const QSize &center) const;
145 void apply(QWidgetAnimator::AnimationRule rule);
146
147 QLayoutItem *itemAt(int *x, int index) const;
148 QLayoutItem *takeAt(int *x, int index);
150
151 QLayoutItem *insertToolBar(QToolBar *before, QToolBar *toolBar);
152 void removeToolBar(QToolBar *toolBar);
153 QLayoutItem *addToolBar(QInternal::DockPosition pos, QToolBar *toolBar);
154 void insertToolBarBreak(QToolBar *before);
155 void removeToolBarBreak(QToolBar *before);
156 void addToolBarBreak(QInternal::DockPosition pos);
157 void moveToolBar(QToolBar *toolbar, int pos);
158
159 void insertItem(QInternal::DockPosition pos, QLayoutItem *item);
160 void insertItem(QToolBar *before, QLayoutItem *item);
161
162 std::optional<QInternal::DockPosition> findToolBar(const QToolBar *toolBar) const;
163 bool toolBarBreak(QToolBar *toolBar) const;
164
165 void getStyleOptionInfo(QStyleOptionToolBar *option, QToolBar *toolBar) const;
166
167 QList<int> indexOf(QWidget *toolBar) const;
168 QList<int> gapIndex(const QPoint &pos) const;
169 QList<int> currentGapIndex() const;
170 bool insertGap(const QList<int> &path, QLayoutItem *item);
171 void remove(const QList<int> &path);
172 void remove(QLayoutItem *item);
173 void clear();
174 QToolBarAreaLayoutItem *item(const QList<int> &path);
175 QRect itemRect(const QList<int> &path) const;
176 QLayoutItem *plug(const QList<int> &path);
177 QLayoutItem *unplug(const QList<int> &path, QToolBarAreaLayout *other);
178
179 void saveState(QDataStream &stream) const;
180 bool restoreState(QDataStream &stream, const QList<QToolBar*> &toolBars, uchar tmarker, QInternal::CallMode callMode);
181 bool isEmpty() const;
182};
183
184QT_END_NAMESPACE
185
186#endif // QTOOLBARAREALAYOUT_P_H
QInternal::DockPosition dockPos
void insertToolBarBreak(QToolBar *before)
void insertItem(QToolBar *before, QLayoutItem *item)
QList< QToolBarAreaLayoutLine > lines
void removeToolBar(QToolBar *toolBar)
void removeToolBarBreak(QToolBar *before)
QLayoutItem * insertToolBar(QToolBar *before, QToolBar *toolBar)
QToolBarAreaLayoutInfo(QInternal::DockPosition pos=QInternal::TopDock)
QList< int > gapIndex(const QPoint &pos, int *maxDistance) const
void moveToolBar(QToolBar *toolbar, int pos)
bool insertGap(const QList< int > &path, QLayoutItem *item)
QRect itemRect(const QList< int > &path) const
int distance(const QPoint &pos) const
void resize(Qt::Orientation o, int newSize)
void extendSize(Qt::Orientation o, int extent)
QToolBarAreaLayoutItem(QLayoutItem *item=nullptr)
QList< QToolBarAreaLayoutItem > toolBarItems
QToolBarAreaLayoutLine(Qt::Orientation orientation)
bool insertGap(const QList< int > &path, QLayoutItem *item)
const QMainWindow * mainWindow
QList< int > indexOf(QWidget *toolBar) const
QSize sizeHint(const QSize &center) const
void removeToolBarBreak(QToolBar *before)
QSize minimumSize(const QSize &centerMin) const
QLayoutItem * unplug(const QList< int > &path, QToolBarAreaLayout *other)
void remove(QLayoutItem *item)
QLayoutItem * insertToolBar(QToolBar *before, QToolBar *toolBar)
void getStyleOptionInfo(QStyleOptionToolBar *option, QToolBar *toolBar) const
void insertItem(QInternal::DockPosition pos, QLayoutItem *item)
void apply(QWidgetAnimator::AnimationRule rule)
QRect rectHint(const QRect &r) const
void removeToolBar(QToolBar *toolBar)
QLayoutItem * itemAt(int *x, int index) const
bool restoreState(QDataStream &stream, const QList< QToolBar * > &toolBars, uchar tmarker, QInternal::CallMode callMode)
void insertToolBarBreak(QToolBar *before)
QToolBarAreaLayoutItem * item(const QList< int > &path)
QRect itemRect(const QList< int > &path) const
QToolBarAreaLayout(const QMainWindow *win)
QLayoutItem * takeAt(int *x, int index)
void saveState(QDataStream &stream) const
std::array< QToolBarAreaLayoutInfo, 4 > docks
QLayoutItem * addToolBar(QInternal::DockPosition pos, QToolBar *toolBar)
QList< int > currentGapIndex() const
bool toolBarBreak(QToolBar *toolBar) const
std::optional< QInternal::DockPosition > findToolBar(const QToolBar *toolBar) const
void remove(const QList< int > &path)
void addToolBarBreak(QInternal::DockPosition pos)
QLayoutItem * plug(const QList< int > &path)
void insertItem(QToolBar *before, QLayoutItem *item)
QList< int > gapIndex(const QPoint &pos) const
void moveToolBar(QToolBar *toolbar, int pos)
Combined button and popup list for selecting options.
QMainWindowLayout * qt_mainwindow_layout(const QMainWindow *window)
QT_REQUIRE_CONFIG(liburing)
static QRect unpackRect(uint geom0, uint geom1, bool *floating)
static void packRect(uint *geom0, uint *geom1, const QRect &rect, bool floating)
static int getInt(QDataStream &stream)
Q_DECLARE_TYPEINFO(QToolBarAreaLayoutItem, Q_PRIMITIVE_TYPE)
Q_DECLARE_TYPEINFO(QToolBarAreaLayoutInfo, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(QToolBarAreaLayoutLine, Q_RELOCATABLE_TYPE)