itom 2.2.1
K:/git-itom/sources/itom/itomWidgets/proxyStyle.h
00001 /*=========================================================================
00002 
00003   Library:   CTK
00004 
00005   Copyright (c) Kitware Inc.
00006 
00007   Licensed under the Apache License, Version 2.0 (the "License");
00008   you may not use this file except in compliance with the License.
00009   You may obtain a copy of the License at
00010 
00011       http://www.apache.org/licenses/LICENSE-2.0.txt
00012 
00013   Unless required by applicable law or agreed to in writing, software
00014   distributed under the License is distributed on an "AS IS" BASIS,
00015   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00016   See the License for the specific language governing permissions and
00017   limitations under the License.
00018 
00019 =========================================================================*/
00020 
00021 #ifndef PROXYSTYLE_H
00022 #define PROXYSTYLE_H
00023 
00024 // QT includes
00025 #include <QProxyStyle>
00026 
00027 // CTK includes
00028 #include "commonWidgets.h"
00029 
00030 class ProxyStylePrivate;
00031 
00034 
00035 class ITOMWIDGETS_EXPORT ProxyStyle : public QProxyStyle
00036 {
00037   Q_OBJECT
00038 public:
00039   ProxyStyle(QStyle *baseStyle = 0, QObject* parent = 0);
00040   virtual ~ProxyStyle();
00041 
00042   void ensureBaseStyle()const;
00043 
00044   virtual void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = 0) const;
00045   virtual void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = 0) const;
00046   virtual void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = 0) const;
00047   virtual void drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled,
00048                             const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const;
00049   virtual void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const;
00050 
00051   virtual QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const;
00052 
00053   virtual QRect subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const;
00054   virtual QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const;
00055   virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const;
00056   virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const;
00057 
00058   virtual SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, const QPoint &pos, const QWidget *widget = 0) const;
00059   virtual int styleHint(StyleHint hint, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const;
00060   virtual int pixelMetric(PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const;
00061 
00062   virtual QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget = 0) const;
00063   virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const;
00064   virtual QPalette standardPalette() const;
00065 
00066   virtual void polish(QWidget *widget);
00067   virtual void polish(QPalette &pal);
00068   virtual void polish(QApplication *app);
00069 
00070   virtual void unpolish(QWidget *widget);
00071   virtual void unpolish(QApplication *app);
00072 
00073 protected:
00074   QScopedPointer<ProxyStylePrivate> d_ptr;
00075   virtual bool event(QEvent *e);
00076 
00077 protected Q_SLOTS:
00078   virtual QIcon standardIconImplementation(StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const;
00079   virtual int layoutSpacingImplementation(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2,
00080                                   Qt::Orientation orientation, const QStyleOption *option = 0, const QWidget *widget = 0) const;
00081 private:
00082   Q_DISABLE_COPY(ProxyStyle)
00083   Q_DECLARE_PRIVATE(ProxyStyle)
00084 };
00085 
00086 #endif
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Properties Friends