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#include <QtCore/qthread.h>
13
15
16QGraphicsLayoutStyleInfo::QGraphicsLayoutStyleInfo(const QGraphicsLayoutPrivate *layout)
17 : m_layout(layout), m_style(nullptr)
18{
19 if (QThread::isMainThread()) {
20 m_widget = std::make_unique<QWidget>(); // pixelMetric might need a widget ptr
21 m_styleOption.initFrom(m_widget.get());
22 }
23 m_isWindow = m_styleOption.state & QStyle::State_Window;
24}
25
29
30qreal QGraphicsLayoutStyleInfo::combinedLayoutSpacing(QLayoutPolicy::ControlTypes controls1,
31 QLayoutPolicy::ControlTypes controls2,
32 Qt::Orientation orientation) const
33{
34 Q_ASSERT(style());
35 return style()->combinedLayoutSpacing(QSizePolicy::ControlTypes(int(controls1)), QSizePolicy::ControlTypes(int(controls2)),
36 orientation, const_cast<QStyleOption*>(&m_styleOption), widget());
37}
38
39qreal QGraphicsLayoutStyleInfo::perItemSpacing(QLayoutPolicy::ControlType control1,
40 QLayoutPolicy::ControlType control2,
41 Qt::Orientation orientation) const
42{
43 Q_ASSERT(style());
44 return style()->layoutSpacing(QSizePolicy::ControlType(control1), QSizePolicy::ControlType(control2),
45 orientation, const_cast<QStyleOption*>(&m_styleOption), widget());
46}
47
48qreal QGraphicsLayoutStyleInfo::spacing(Qt::Orientation orientation) const
49{
50 Q_ASSERT(style());
51 return style()->pixelMetric(orientation == Qt::Horizontal
52 ? QStyle::PM_LayoutHorizontalSpacing : QStyle::PM_LayoutVerticalSpacing,
53 &m_styleOption, widget());
54}
55
56qreal QGraphicsLayoutStyleInfo::windowMargin(Qt::Orientation orientation) const
57{
58 return style()->pixelMetric(orientation == Qt::Vertical
59 ? QStyle::PM_LayoutBottomMargin
60 : QStyle::PM_LayoutRightMargin,
61 const_cast<QStyleOption*>(&m_styleOption), widget());
62}
63
64QWidget *QGraphicsLayoutStyleInfo::widget() const { return m_widget.get(); }
65
67{
68 if (!m_style) {
69 Q_ASSERT(m_layout);
70 QGraphicsItem *item = m_layout->parentItem();
71 m_style = (item && item->isWidget()) ? static_cast<QGraphicsWidget*>(item)->style() : QApplication::style();
72 }
73 return m_style;
74}
75
76QT_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:432
Combined button and popup list for selecting options.