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
qgraphicslayoutstyleinfo.cpp
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
6
9#include <QtWidgets/qstyle.h>
10#include <QtWidgets/qwidget.h>
11#include <QtWidgets/qapplication.h>
12
14
15QGraphicsLayoutStyleInfo::QGraphicsLayoutStyleInfo(const QGraphicsLayoutPrivate *layout)
16 : m_layout(layout), m_style(nullptr)
17{
18 m_widget.reset(new QWidget); // pixelMetric might need a widget ptr
19 m_styleOption.initFrom(m_widget.get());
20 m_isWindow = m_styleOption.state & QStyle::State_Window;
21}
22
26
27qreal QGraphicsLayoutStyleInfo::combinedLayoutSpacing(QLayoutPolicy::ControlTypes controls1,
28 QLayoutPolicy::ControlTypes controls2,
29 Qt::Orientation orientation) const
30{
31 Q_ASSERT(style());
32 return style()->combinedLayoutSpacing(QSizePolicy::ControlTypes(int(controls1)), QSizePolicy::ControlTypes(int(controls2)),
33 orientation, const_cast<QStyleOption*>(&m_styleOption), widget());
34}
35
36qreal QGraphicsLayoutStyleInfo::perItemSpacing(QLayoutPolicy::ControlType control1,
37 QLayoutPolicy::ControlType control2,
38 Qt::Orientation orientation) const
39{
40 Q_ASSERT(style());
41 return style()->layoutSpacing(QSizePolicy::ControlType(control1), QSizePolicy::ControlType(control2),
42 orientation, const_cast<QStyleOption*>(&m_styleOption), widget());
43}
44
45qreal QGraphicsLayoutStyleInfo::spacing(Qt::Orientation orientation) const
46{
47 Q_ASSERT(style());
48 return style()->pixelMetric(orientation == Qt::Horizontal
49 ? QStyle::PM_LayoutHorizontalSpacing : QStyle::PM_LayoutVerticalSpacing,
50 &m_styleOption, widget());
51}
52
53qreal QGraphicsLayoutStyleInfo::windowMargin(Qt::Orientation orientation) const
54{
55 return style()->pixelMetric(orientation == Qt::Vertical
56 ? QStyle::PM_LayoutBottomMargin
57 : QStyle::PM_LayoutRightMargin,
58 const_cast<QStyleOption*>(&m_styleOption), widget());
59}
60
61QWidget *QGraphicsLayoutStyleInfo::widget() const { return m_widget.get(); }
62
64{
65 if (!m_style) {
66 Q_ASSERT(m_layout);
67 QGraphicsItem *item = m_layout->parentItem();
68 m_style = (item && item->isWidget()) ? static_cast<QGraphicsWidget*>(item)->style() : QApplication::style();
69 }
70 return m_style;
71}
72
73QT_END_NAMESPACE
virtual qreal spacing(Qt::Orientation orientation) const override
virtual qreal perItemSpacing(QLayoutPolicy::ControlType control1, QLayoutPolicy::ControlType control2, Qt::Orientation orientation) const override
virtual qreal combinedLayoutSpacing(QLayoutPolicy::ControlTypes controls1, QLayoutPolicy::ControlTypes controls2, Qt::Orientation orientation) const override
virtual qreal windowMargin(Qt::Orientation orientation) const override
friend class QWidget
Definition qpainter.h:431
Combined button and popup list for selecting options.