From e8e522b66d503549f0e71e6be64b1769f6a36971 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Fri, 23 Dec 2016 11:48:00 -0500 Subject: Oops - forgot to add the new RotateToolButton file (not used yet - still tinkering with it) --- .../panel-plugins/RotateToolButton.h | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src-qt5/core/lumina-desktop/panel-plugins/RotateToolButton.h (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop/panel-plugins/RotateToolButton.h b/src-qt5/core/lumina-desktop/panel-plugins/RotateToolButton.h new file mode 100644 index 00000000..1c8085f6 --- /dev/null +++ b/src-qt5/core/lumina-desktop/panel-plugins/RotateToolButton.h @@ -0,0 +1,58 @@ +//=========================================== +// Lumina Desktop source code +// Copyright (c) 2016, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This is a simple subclass of a QToolButton so it can +// provice text rotated vertically as needed +//=========================================== +#ifndef _LUMINA_DESKTOP_ROTATE_TOOLBUTTON_H +#define _LUMINA_DESKTOP_ROTATE_TOOLBUTTON_H + +#include +#include +#include +#include + +class RotateToolButton : public QToolButton{ + Q_OBJECT + +private: + int rotate_degrees; + void paintEvent(QPaintEvent*){ + /* NOTE: This is what a standard QToolButton performs (peeked at Qt source code for this tidbit) + QStylePainter p(this); + QStyleOptionToolButton opt; + initStyleOption(&opt); + p.drawComplexControl(QStyle::CC_ToolButton, opt); + */ + QStylePainter p(this); + QStyleOptionToolButton opt; + initStyleOption(&opt); + //Apply the rotation matrix to the painter before starting the paint + QTransform trans = QTransform( p.transform() ).rotate(rotate_degrees); + p.setTransform(trans, false); //merging already taken care of + //Now do the normal painting procedure + p.drawComplexControl(QStyle::CC_ToolButton, opt); + } + +public: + RotateToolButton(QWidget *parent = Q_NULLPTR) : QToolButton(parent){ + rotate_degrees = 0; //no rotation initially + } + + void setRotation(int degrees){ + rotate_degrees = degrees; + this->update(); //trigger a paint event + } + + /*virtual void setText(QString text){ + this->setText(text); + if(rotate_degrees !=0){ + this->setSizeHint( this->sizeHint() + } + }*/ +}; + +#endif -- cgit