aboutsummaryrefslogtreecommitdiff
path: root/examples/GuiClient/customToolButton.cpp
diff options
context:
space:
mode:
authorManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-08 09:23:18 +0000
committerManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-08 09:23:18 +0000
commitda88f5f0bb5e73bc69bf7ed3962691622b1ae4f9 (patch)
treec3686f7649785a2bfcc2c637a1588acdb8a721e8 /examples/GuiClient/customToolButton.cpp
parent3431f5a37174b7eb8490672686db68df2b48e35f (diff)
downloadqxmpp-da88f5f0bb5e73bc69bf7ed3962691622b1ae4f9.tar.gz
add Gui Client example
Diffstat (limited to 'examples/GuiClient/customToolButton.cpp')
-rw-r--r--examples/GuiClient/customToolButton.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/examples/GuiClient/customToolButton.cpp b/examples/GuiClient/customToolButton.cpp
new file mode 100644
index 00000000..ba92b923
--- /dev/null
+++ b/examples/GuiClient/customToolButton.cpp
@@ -0,0 +1,51 @@
+#include "customToolButton.h"
+#include <QPainter>
+#include <QStyle>
+#include <QStyleOptionToolButton>
+
+customToolButton::customToolButton(QWidget* parent) : QToolButton(parent)
+{
+ setMinimumSize(QSize(20, 18));
+}
+
+void customToolButton::paintEvent(QPaintEvent* event)
+{
+ Q_UNUSED(event);
+ QPainter painter(this);
+ QStyleOptionToolButton panel;
+ initStyleOption(&panel);
+ style()->drawPrimitive(QStyle::PE_PanelButtonTool, &panel, &painter, this);
+ QRect r = rect();
+ QFont font;
+ painter.setFont(font);
+ painter.setPen(Qt::gray);
+
+ QRect rectSize(0, 0, sizeHint().width(), sizeHint().height());
+ rectSize.moveCenter(r.center());
+ r = rectSize;
+ r.adjust(0, 0, -1, -1);
+ 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 customToolButton::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);
+}