From da88f5f0bb5e73bc69bf7ed3962691622b1ae4f9 Mon Sep 17 00:00:00 2001 From: Manjeet Dahiya Date: Wed, 8 Sep 2010 09:23:18 +0000 Subject: add Gui Client example --- examples/GuiClient/customPushButton.cpp | 72 +++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 examples/GuiClient/customPushButton.cpp (limited to 'examples/GuiClient/customPushButton.cpp') diff --git a/examples/GuiClient/customPushButton.cpp b/examples/GuiClient/customPushButton.cpp new file mode 100644 index 00000000..f0693dc1 --- /dev/null +++ b/examples/GuiClient/customPushButton.cpp @@ -0,0 +1,72 @@ +#include "customPushButton.h" +#include +#include +#include + +customPushButton::customPushButton(QWidget* parent) + : QPushButton(parent) +{ + setMinimumSize(QSize(20, 18)); +} + +void customPushButton::paintEvent(QPaintEvent* event) +{ + Q_UNUSED(event); + QPainter painter(this); +// painter.setRenderHint(QPainter::Antialiasing); + + QFont font; + painter.setFont(font); + QStyleOptionButton panel; + initStyleOption(&panel); + QRect r = style()->subElementRect(QStyle::SE_PushButtonFocusRect, &panel, this); + painter.setPen(Qt::gray); + + QRect rectSize(0, 0, sizeHint().width(), sizeHint().height()); + rectSize.moveCenter(r.center()); + r = rectSize; + r.adjust(0, 0, -1, -1); + if(underMouse() && !isDown()) + { + QRectF rr = r; + painter.drawRoundedRect(r, 3, 3); + QColor col(Qt::white); + col.setAlpha(80); + rr.adjust(1, 1, -1, -1); + painter.fillRect(rr, col); + } + if(isDown()) + { + QRectF rr = r; +// rr.adjust(1, 1, -1, -1); + painter.drawRoundedRect(rr, 3, 3); + QColor col(Qt::white); + col.setAlpha(80); + rr.adjust(1, 1, -1, -1); + painter.fillRect(rr, col); + } + painter.setPen(Qt::black); + painter.setBrush(Qt::black); + r.moveLeft(r.left() + 3); + font.setBold(true); + painter.setFont(font); + painter.drawText(r, Qt::AlignVCenter|Qt::TextSingleLine, text()); + + QImage image(":/icons/resource/downArrow.png"); + QRect rectDelta(0, 0, 7, 4); + rectDelta.moveRight(r.right() - 4); + rectDelta.moveCenter(QPoint(rectDelta.center().x(), r.center().y())); + painter.drawImage(rectDelta, image); +} + +QSize customPushButton::sizeHint() const +{ + QFont font; + font.setBold(true); + QFontMetrics fm(font); + int width = fm.width(text()); + if(width <= (160 - 8 - 9)) + return QSize(width+8+9, 18); + else + return QSize(160, 18); +} -- cgit v1.2.3