diff options
| author | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-08 09:23:18 +0000 |
|---|---|---|
| committer | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-08 09:23:18 +0000 |
| commit | da88f5f0bb5e73bc69bf7ed3962691622b1ae4f9 (patch) | |
| tree | c3686f7649785a2bfcc2c637a1588acdb8a721e8 /examples/GuiClient/customToolButton.cpp | |
| parent | 3431f5a37174b7eb8490672686db68df2b48e35f (diff) | |
| download | qxmpp-da88f5f0bb5e73bc69bf7ed3962691622b1ae4f9.tar.gz | |
add Gui Client example
Diffstat (limited to 'examples/GuiClient/customToolButton.cpp')
| -rw-r--r-- | examples/GuiClient/customToolButton.cpp | 51 |
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);
+}
|
