An extended QPushButton with rotation and rich text support. More...
#include <qxtpushbutton.h>

Public Member Functions | |
| QxtPushButton (QWidget *parent=0) | |
| QxtPushButton (const QString &text, QWidget *parent=0) | |
| QxtPushButton (const QIcon &icon, const QString &text, QWidget *parent=0) | |
| QxtPushButton (Qxt::Rotation rotation, const QString &text, QWidget *parent=0) | |
| virtual | ~QxtPushButton () |
| Qxt::Rotation | rotation () const |
| void | setRotation (Qxt::Rotation rotation) |
| Qt::TextFormat | textFormat () const |
| void | setTextFormat (Qt::TextFormat format) |
| virtual QSize | sizeHint () const |
| virtual QSize | minimumSizeHint () const |
Protected Member Functions | |
| virtual void | paintEvent (QPaintEvent *event) |
Properties | |
| Qxt::Rotation | rotation |
| This property holds the rotation of the button. | |
| Qt::TextFormat | textFormat |
| This property holds the text format of the button. | |
Friends | |
| class | QxtPushButtonPrivate |
An extended QPushButton with rotation and rich text support.
QxtPushButton is a QPushButton which can be rotated. In addition, QxtPushButton provides rich text support.
QxtPushButton in action.
Definition at line 35 of file qxtpushbutton.h.
| QxtPushButton::QxtPushButton | ( | QWidget * | parent = 0 ) |
[explicit] |
Constructs a new QxtPushButton with parent.
Definition at line 117 of file qxtpushbutton.cpp.
References QXT_INIT_PRIVATE.
: QPushButton(parent)
{
QXT_INIT_PRIVATE(QxtPushButton);
}
| QxtPushButton::QxtPushButton | ( | const QString & | text, |
| QWidget * | parent = 0 |
||
| ) | [explicit] |
Constructs a new QxtPushButton with text and parent.
Definition at line 125 of file qxtpushbutton.cpp.
References QXT_INIT_PRIVATE.
: QPushButton(text, parent)
{
QXT_INIT_PRIVATE(QxtPushButton);
}
| QxtPushButton::QxtPushButton | ( | const QIcon & | icon, |
| const QString & | text, | ||
| QWidget * | parent = 0 |
||
| ) | [explicit] |
Constructs a new QxtPushButton with icon, text and parent.
Definition at line 135 of file qxtpushbutton.cpp.
References QXT_INIT_PRIVATE.
: QPushButton(icon, text, parent)
{
QXT_INIT_PRIVATE(QxtPushButton);
}
| QxtPushButton::QxtPushButton | ( | Qxt::Rotation | rotation, |
| const QString & | text, | ||
| QWidget * | parent = 0 |
||
| ) | [explicit] |
Constructs a new QxtPushButton with rotation, text and parent.
Definition at line 143 of file qxtpushbutton.cpp.
References QXT_INIT_PRIVATE, and setRotation().
: QPushButton(text, parent)
{
QXT_INIT_PRIVATE(QxtPushButton);
setRotation(rotation);
}
| QxtPushButton::~QxtPushButton | ( | ) | [virtual] |
| QSize QxtPushButton::minimumSizeHint | ( | ) | const [virtual] |
| void QxtPushButton::paintEvent | ( | QPaintEvent * | event ) | [protected, virtual] |
Definition at line 255 of file qxtpushbutton.cpp.
References Qxt::Clockwise, Qxt::CounterClockwise, Qxt::UpsideDown, and Vertical_Mask.
{
Q_UNUSED(event);
// the only reliable way to detect text changes
if (text() != qxt_d().text)
{
qxt_d().text = text();
if (qxt_d().isRichText())
qxt_d().doc->setHtml(qxt_d().text);
updateGeometry();
}
QStylePainter painter(this);
painter.rotate(qxt_d().rot);
switch (qxt_d().rot)
{
case Qxt::UpsideDown:
painter.translate(-width(), -height());
break;
case Qxt::Clockwise:
painter.translate(0, -width());
break;
case Qxt::CounterClockwise:
painter.translate(-height(), 0);
break;
default:
// nothing to do
break;
}
const QStyleOptionButton option = qxt_d().getStyleOption();
painter.drawControl(QStyle::CE_PushButton, option);
#if QT_VERSION >= 0x040200
if (qxt_d().isRichText())
{
int dx = 0;
int dy = 0;
if (option.state & (QStyle::State_On | QStyle::State_Sunken))
{
dx += style()->pixelMetric(QStyle::PM_ButtonShiftHorizontal, &option, this);
dy += style()->pixelMetric(QStyle::PM_ButtonShiftVertical, &option, this);
}
QRect area = rect();
const QSizeF docSize = qxt_d().doc->documentLayout()->documentSize();
if (qxt_d().rot & Vertical_Mask)
{
dx += static_cast<int>((height() - docSize.width()) / 2);
dy += static_cast<int>((width() - docSize.height()) / 2);
painter.translate(dx, dy);
QSize size = area.size();
size.transpose();
area.setSize(size);
}
else
{
dx += static_cast<int>((width() - docSize.width()) / 2);
dy += static_cast<int>((height() - docSize.height()) / 2);
painter.translate(dx, dy);
}
qxt_d().doc->drawContents(&painter, area);
}
#endif // QT_VERSION
}
| Qxt::Rotation QxtPushButton::rotation | ( | ) | const |
Referenced by setRotation().
| void QxtPushButton::setRotation | ( | Qxt::Rotation | rotation ) |
Definition at line 169 of file qxtpushbutton.cpp.
References Qxt::Clockwise, Qxt::CounterClockwise, Qxt::NoRotation, rotation(), and Qxt::UpsideDown.
Referenced by QxtPushButton().
{
if (qxt_d().rot != rotation)
{
qxt_d().rot = rotation;
switch (rotation)
{
case Qxt::NoRotation:
case Qxt::UpsideDown:
setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
break;
case Qxt::Clockwise:
case Qxt::CounterClockwise:
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Minimum);
break;
default:
// nothing to do
break;
}
updateGeometry();
update();
}
}
| void QxtPushButton::setTextFormat | ( | Qt::TextFormat | format ) |
Definition at line 212 of file qxtpushbutton.cpp.
{
if (qxt_d().format != format)
{
qxt_d().format = format;
if (!qxt_d().isRichText())
{
delete qxt_d().doc;
qxt_d().doc = 0;
}
qxt_d().text.clear();
update();
updateGeometry();
}
}
| QSize QxtPushButton::sizeHint | ( | ) | const [virtual] |
Definition at line 231 of file qxtpushbutton.cpp.
References Vertical_Mask.
Referenced by minimumSizeHint().
{
QSize size;
if (qxt_d().isRichText())
size = qxt_d().doc->documentLayout()->documentSize().toSize();
else
size = QPushButton::sizeHint();
if (qxt_d().rot & Vertical_Mask)
size.transpose();
return size;
}
| Qt::TextFormat QxtPushButton::textFormat | ( | ) | const |
friend class QxtPushButtonPrivate [friend] |
Definition at line 38 of file qxtpushbutton.h.
Qxt::Rotation QxtPushButton::rotation [read, write] |
This property holds the rotation of the button.
The button is rotated according to this property. The default value is Qxt::NoRotation.
Definition at line 38 of file qxtpushbutton.h.
Qt::TextFormat QxtPushButton::textFormat [read, write] |
This property holds the text format of the button.
Supported formats are Qt::PlainText, Qt::RichText and Qt::AutoText.
The default format is Qt::PlainText.
Definition at line 40 of file qxtpushbutton.h.
1.7.2