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 "qmenu_p.h"
21#include <QList>
22#include <QSize>
23#include <QRect>
24
26
27QT_BEGIN_NAMESPACE
28
29class QToolBar;
30class QLayoutItem;
31class QMainWindow;
32class QStyleOptionToolBar;
33
35{
36public:
37 QToolBarAreaLayoutItem(QLayoutItem *item = nullptr)
38 : widgetItem(item), pos(0), size(-1), preferredSize(-1), gap(false) {}
39
40 bool skip() const;
41 QSize minimumSize() const;
42 QSize sizeHint() const;
43 QSize realSizeHint() const;
44
45 void resize(Qt::Orientation o, int newSize)
46 {
47 newSize = qMax(pick(o, minimumSize()), newSize);
48 int sizeh = pick(o, sizeHint());
49 if (newSize == sizeh) {
50 preferredSize = -1;
51 size = sizeh;
52 } else {
53 preferredSize = newSize;
54 }
55 }
56
57 void extendSize(Qt::Orientation o, int extent)
58 {
59 int newSize = qMax(pick(o, minimumSize()), (preferredSize > 0 ? preferredSize : pick(o, sizeHint())) + extent);
60 int sizeh = pick(o, sizeHint());
61 if (newSize == sizeh) {
62 preferredSize = -1;
63 size = sizeh;
64 } else {
65 preferredSize = newSize;
66 }
67 }
68
69 QLayoutItem *widgetItem;
70 int pos;
71 int size;
73 bool gap;
74};
76
78{
79public:
80 QToolBarAreaLayoutLine() { } // for QList, don't use
81 QToolBarAreaLayoutLine(Qt::Orientation orientation);
82
83 QSize sizeHint() const;
84 QSize minimumSize() const;
85
86 void fitLayout();
87 bool skip() const;
88
91
93};
95
97{
98public:
99 QToolBarAreaLayoutInfo(QInternal::DockPosition pos = QInternal::TopDock);
100
101 QSize sizeHint() const;
102 QSize minimumSize() const;
103
104 void fitLayout();
105
106 QLayoutItem *insertToolBar(QToolBar *before, QToolBar *toolBar);
107 void insertItem(QToolBar *before, QLayoutItem *item);
108 void removeToolBar(QToolBar *toolBar);
109 void insertToolBarBreak(QToolBar *before);
110 void removeToolBarBreak(QToolBar *before);
111 void moveToolBar(QToolBar *toolbar, int pos);
112
113 QList<int> gapIndex(const QPoint &pos, int *maxDistance) const;
114 bool insertGap(const QList<int> &path, QLayoutItem *item);
115 void clear();
116 QRect itemRect(const QList<int> &path) const;
117 int distance(const QPoint &pos) const;
118
123 bool dirty;
124};
126
128{
129public:
130 enum { // sentinel values used to validate state data
133 };
134
136 const QMainWindow *mainWindow;
139
140 QToolBarAreaLayout(const QMainWindow *win);
141
143
144 QSize minimumSize(const QSize &centerMin) const;
145 QRect rectHint(const QRect &r) const;
146 QSize sizeHint(const QSize &center) const;
147 void apply(bool animate);
148
149 QLayoutItem *itemAt(int *x, int index) const;
150 QLayoutItem *takeAt(int *x, int index);
152
153 QLayoutItem *insertToolBar(QToolBar *before, QToolBar *toolBar);
154 void removeToolBar(QToolBar *toolBar);
155 QLayoutItem *addToolBar(QInternal::DockPosition pos, QToolBar *toolBar);
156 void insertToolBarBreak(QToolBar *before);
157 void removeToolBarBreak(QToolBar *before);
158 void addToolBarBreak(QInternal::DockPosition pos);
159 void moveToolBar(QToolBar *toolbar, int pos);
160
161 void insertItem(QInternal::DockPosition pos, QLayoutItem *item);
162 void insertItem(QToolBar *before, QLayoutItem *item);
163
164 QInternal::DockPosition findToolBar(const QToolBar *toolBar) const;
165 bool toolBarBreak(QToolBar *toolBar) const;
166
167 void getStyleOptionInfo(QStyleOptionToolBar *option, QToolBar *toolBar) const;
168
169 QList<int> indexOf(QWidget *toolBar) const;
170 QList<int> gapIndex(const QPoint &pos) const;
171 QList<int> currentGapIndex() const;
172 bool insertGap(const QList<int> &path, QLayoutItem *item);
173 void remove(const QList<int> &path);
174 void remove(QLayoutItem *item);
175 void clear();
176 QToolBarAreaLayoutItem *item(const QList<int> &path);
177 QRect itemRect(const QList<int> &path) const;
178 QLayoutItem *plug(const QList<int> &path);
179 QLayoutItem *unplug(const QList<int> &path, QToolBarAreaLayout *other);
180
181 void saveState(QDataStream &stream) const;
182 bool restoreState(QDataStream &stream, const QList<QToolBar*> &toolBars, uchar tmarker, bool testing = false);
183 bool isEmpty() const;
184};
185
186QT_END_NAMESPACE
187
188#endif // QTOOLBARAREALAYOUT_P_H
friend class QWidget
Definition qpainter.h:431
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
QToolBarAreaLayoutInfo docks[4]
bool restoreState(QDataStream &stream, const QList< QToolBar * > &toolBars, uchar tmarker, bool testing=false)
void insertItem(QInternal::DockPosition pos, QLayoutItem *item)
QRect rectHint(const QRect &r) const
void removeToolBar(QToolBar *toolBar)
QLayoutItem * itemAt(int *x, int index) const
void insertToolBarBreak(QToolBar *before)
void apply(bool animate)
QInternal::DockPosition findToolBar(const QToolBar *toolBar) const
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
QLayoutItem * addToolBar(QInternal::DockPosition pos, QToolBar *toolBar)
QList< int > currentGapIndex() const
bool toolBarBreak(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)
QMainWindowLayout * qt_mainwindow_layout(const QMainWindow *window)
QT_REQUIRE_CONFIG(thread)
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)