diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-10-29 04:54:35 (GMT) |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-10-29 04:54:35 (GMT) |
commit | c06be171d9e9efe91a3612bf0a82fab0d2cff2fa (patch) | |
tree | 8c3194e5171125f281f4df53328826138e723719 /src/gui/graphicsview/qgraphicslayout_p.h | |
parent | bfbded95056d43a65b2c9ef1fa90bfd40adc6472 (diff) | |
parent | 51f1d68addd23516d7e6e252e476feac0a95d0c0 (diff) | |
download | Qt-c06be171d9e9efe91a3612bf0a82fab0d2cff2fa.zip Qt-c06be171d9e9efe91a3612bf0a82fab0d2cff2fa.tar.gz Qt-c06be171d9e9efe91a3612bf0a82fab0d2cff2fa.tar.bz2 |
Merge branch '4.6' of git@scm.dev.nokia.troll.no:qt/qt-widget-team into kinetic-declarativeui
Diffstat (limited to 'src/gui/graphicsview/qgraphicslayout_p.h')
-rw-r--r-- | src/gui/graphicsview/qgraphicslayout_p.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/gui/graphicsview/qgraphicslayout_p.h b/src/gui/graphicsview/qgraphicslayout_p.h index 59c6dba..4aeae39 100644 --- a/src/gui/graphicsview/qgraphicslayout_p.h +++ b/src/gui/graphicsview/qgraphicslayout_p.h @@ -60,6 +60,8 @@ #include "qgraphicslayout.h" #include "qgraphicslayoutitem_p.h" #include <QtGui/qstyle.h> +#include <QtGui/qwidget.h> +#include <QtGui/qstyleoption.h> QT_BEGIN_NAMESPACE @@ -76,6 +78,55 @@ inline bool qt_graphicsLayoutDebug() } #endif + +class QLayoutStyleInfo +{ +public: + inline QLayoutStyleInfo() { invalidate(); } + inline QLayoutStyleInfo(QStyle *style, QWidget *widget) + : m_valid(true), m_style(style), m_widget(widget) + { + Q_ASSERT(style); + if (widget) //### + m_styleOption.initFrom(widget); + m_defaultSpacing[0] = style->pixelMetric(QStyle::PM_LayoutHorizontalSpacing); + m_defaultSpacing[1] = style->pixelMetric(QStyle::PM_LayoutVerticalSpacing); + } + + inline void invalidate() { m_valid = false; m_style = 0; m_widget = 0; } + + inline QStyle *style() const { return m_style; } + inline QWidget *widget() const { return m_widget; } + + inline bool operator==(const QLayoutStyleInfo &other) + { return m_style == other.m_style && m_widget == other.m_widget; } + inline bool operator!=(const QLayoutStyleInfo &other) + { return !(*this == other); } + + inline void setDefaultSpacing(Qt::Orientation o, qreal spacing){ + if (spacing >= 0) + m_defaultSpacing[o - 1] = spacing; + } + + inline qreal defaultSpacing(Qt::Orientation o) const { + return m_defaultSpacing[o - 1]; + } + + inline qreal perItemSpacing(QSizePolicy::ControlType control1, + QSizePolicy::ControlType control2, + Qt::Orientation orientation) const + { + Q_ASSERT(style()); + return style()->layoutSpacing(control1, control2, orientation, &m_styleOption, widget()); + } +private: + bool m_valid; + QStyle *m_style; + QWidget *m_widget; + QStyleOption m_styleOption; + qreal m_defaultSpacing[2]; +}; + class Q_AUTOTEST_EXPORT QGraphicsLayoutPrivate : public QGraphicsLayoutItemPrivate { Q_DECLARE_PUBLIC(QGraphicsLayout) |