4#ifndef QGRIDLAYOUTENGINE_P_H
5#define QGRIDLAYOUTENGINE_P_H
18#include <QtGui/private/qtguiglobal_p.h>
20#include <QtCore/qalgorithms.h>
21#include <QtCore/qbitarray.h>
22#include <QtCore/qlist.h>
23#include <QtCore/qmap.h>
24#include <QtCore/qpair.h>
25#include <QtCore/qsize.h>
26#include <QtCore/qrect.h>
85 noexcept(std::is_nothrow_copy_constructible_v<T>)
97 noexcept(
std::is_nothrow_copy_constructible_v<T>)
98 {
return {m_data[1], m_data[0]}; }
115 if (q_state !=
User) {
120 inline T
value()
const {
return q_value; }
121 inline T
value(T defaultValue)
const {
return isUser() ? q_value : defaultValue; }
128 mutable State q_state;
142 : q_minimumSize(0), q_preferredSize(0), q_maximumSize(FLT_MAX),
143 q_minimumDescent(-1), q_minimumAscent(-1) {}
149#ifdef QGRIDLAYOUTENGINE_DEBUG
150 void dump(
int indent = 0)
const;
167 return q_minimumSize;
169 return q_preferredSize;
171 return q_maximumSize;
173 return q_minimumDescent;
175 return q_minimumAscent;
211#ifdef QGRIDLAYOUTENGINE_DEBUG
212 void dump(
int indent = 0)
const;
230#ifdef QGRIDLAYOUTENGINE_DEBUG
231 void dump(
int indent = 0)
const;
253 inline int lastRow()
const {
return firstRow() + rowSpan() - 1; }
254 inline int lastColumn()
const {
return firstColumn() + columnSpan() - 1; }
268 inline Qt::Alignment
alignment()
const {
return q_alignment; }
273 virtual bool isEmpty()
const {
return false; }
284 virtual QLayoutPolicy::ControlTypes controlTypes(
LayoutSide side)
const;
292 QSizeF effectiveMaxSize(
const QSizeF &constraint)
const;
294#ifdef QGRIDLAYOUTENGINE_DEBUG
295 void dump(
int indent = 0)
const;
302 Qt::Alignment q_alignment;
309 QGridLayoutEngine(Qt::Alignment defaultAlignment = { },
bool snapToPixelGrid =
false);
317 int itemCount()
const;
323 void setSpacing(
qreal spacing, Qt::Orientations orientations);
337 bool uniformCellWidths()
const;
338 void setUniformCellWidths(
bool uniformCellWidths);
340 bool uniformCellHeights()
const;
341 void setUniformCellHeights(
bool uniformCellHeights);
366 { insertOrRemoveRows(
row, +1, orientation); }
368 { insertOrRemoveRows(
row, -
count, orientation); }
379 bool ensureDynamicConstraint()
const;
380 bool hasDynamicConstraint()
const;
384 QLayoutPolicy::ControlTypes controlTypes(
LayoutSide side)
const;
388#ifdef QGRIDLAYOUTENGINE_DEBUG
389 void dump(
int indent = 0)
const;
393 static int grossRoundUp(
int n) {
return ((
n + 2) | 0x3) - 2; }
396 void regenerateGrid();
397 inline int internalGridRowCount()
const {
return grossRoundUp(rowCount()); }
398 inline int internalGridColumnCount()
const {
return grossRoundUp(columnCount()); }
402 const qreal *colPositions,
const qreal *colSizes,
405 void ensureEffectiveFirstAndLastRows()
const;
407 const qreal *colPositions,
const qreal *colSizes,
422 Qt::Alignment m_defaultAlignment;
423 unsigned m_snapToPixelGrid : 1;
424 unsigned m_uniformCellWidths : 1;
425 unsigned m_uniformCellHeights : 1;
430 mutable quint8 q_cachedConstraintOrientation : 3;
436 CachedWithNoConstraint = -1
446 mutable QSizeF q_cachedSize;
const qreal & q_sizes(int which) const
qreal & q_sizes(int which)
QSizeF dynamicallyConstrainedSizeHint(Qt::SizeHint which, const QSizeF &constraint) const
QList< QGridLayoutItem * > q_items
void insertRow(int row, Qt::Orientation orientation=Qt::Vertical)
void removeRows(int row, int count, Qt::Orientation orientation)
virtual bool isEmpty() const
virtual ~QGridLayoutItem()
Qt::Alignment alignment() const
virtual bool hasDynamicConstraint() const
virtual QLayoutPolicy::Policy sizePolicy(Qt::Orientation orientation) const =0
virtual Qt::Orientation dynamicConstraintOrientation() const
virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint) const =0
virtual void setGeometry(const QRectF &rect)=0
void setAlignment(Qt::Alignment alignment)
QGridLayoutMultiCellData()
QList< QGridLayoutBox > boxes
QGridLayoutBox totalBox(int start, int end) const
void stealBox(int start, int end, int which, qreal *positions, qreal *sizes)
void calculateGeometries(int start, int end, qreal targetSize, qreal *positions, qreal *sizes, qreal *descents, const QGridLayoutBox &totalBox, const QGridLayoutRowInfo &rowInfo, bool snapToPixelGrid)
MultiCellMap multiCellMap
void distributeMultiCells(const QGridLayoutRowInfo &rowInfo, bool snapToPixelGrid)
QList< QLayoutParameter< qreal > > spacings
QList< QGridLayoutBox > boxes
QList< Qt::Alignment > alignments
QList< QStretchParameter > stretches
void insertOrRemoveRows(int row, int delta)
constexpr T & operator[](Qt::Orientation o) noexcept
constexpr T & other(Qt::Orientation o) noexcept
constexpr const T & operator[](Qt::Orientation o) const noexcept
constexpr void transpose() noexcept
constexpr QHVContainer transposed() const noexcept(std::is_nothrow_copy_constructible_v< T >)
constexpr const T & other(Qt::Orientation o) const noexcept
constexpr QHVContainer(const T &h, const T &v) noexcept(std::is_nothrow_copy_constructible_v< T >)
QLayoutParameter(T value, State state=Default)
void setUserValue(T value)
T value(T defaultValue) const
void setCachedValue(T value) const
\inmodule QtCore\reentrant
The QStyle class is an abstract base class that encapsulates the look and feel of a GUI.
QMap< QString, QString > map
[6]
qDeleteAll(list.begin(), list.end())
Combined button and popup list for selecting options.
static const QCssKnownValue positions[NumKnownPositionModes - 1]
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
bool operator!=(const QGridLayoutBox &box1, const QGridLayoutBox &box2)
QMap< QPair< int, int >, QGridLayoutMultiCellData > MultiCellMap
bool operator==(const QGridLayoutBox &box1, const QGridLayoutBox &box2)
GLsizei const GLfloat * v
[13]
GLint GLint GLint GLint GLint x
[0]
GLint GLsizei GLsizei height
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLenum GLenum GLsizei count
GLint GLsizei GLboolean transpose
GLsizei const GLint * box
GLfloat GLfloat GLfloat GLfloat h
GLenum GLenum GLsizei void GLsizei void * column
GLuint GLsizei const GLuint const GLintptr const GLsizeiptr * sizes
GLenum GLenum GLsizei void * row
static void normalize(double &x, double &y)
static void add(QPainterPath &path, const QWingedEdge &list, int edge, QPathEdge::Traversal traversal)
static void layoutItem(QQuickItem *item, qreal y, qreal width)
static QString dump(const QByteArray &)
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)