From c7bffca4cfc626c62c0eae6bc6b06d92cb2a8340 Mon Sep 17 00:00:00 2001 From: Arno Date: Mon, 13 Dec 2010 19:31:16 +0100 Subject: Set caption for HoverWindow Implement a caption for HoverWindow. Used to show the filename when hovering. --- hoverwindow.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'hoverwindow.cpp') diff --git a/hoverwindow.cpp b/hoverwindow.cpp index e9fcc64..b478879 100644 --- a/hoverwindow.cpp +++ b/hoverwindow.cpp @@ -12,6 +12,14 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include +#include #include "hoverwindow.h" #include "smglobals.h" @@ -89,6 +97,28 @@ void HoverWindow::setData(const QList &data){ setContent(data.at(0).toString(), dataList); } +void HoverWindow::setCaption(const QString &caption){ + const QPixmap *pm = mLabel->pixmap(); + if(!pm){ + return; + } + QFontMetrics fm = qApp->fontMetrics(); + QString elidedCap = fm.elidedText(caption, Qt::ElideMiddle, pm->size().width() - 18, Qt::TextSingleLine); + QSize captionSize = fm.size(Qt::TextSingleLine, elidedCap); + QImage img = pm->toImage(); + QPainter *p = new QPainter(&img); + QColor bgColor(Qt::white); + p->setBrush(QBrush(bgColor)); + p->setPen(Qt::NoPen); + qreal xStart = (pm->size().width() - captionSize.width()) / 2.0; + QRectF bgRect(xStart, 5, captionSize.width() + 6, captionSize.height()); + p->drawRect(bgRect); + p->setPen(Qt::black); + p->drawText(bgRect.topLeft().x() + 3, bgRect.topLeft().y() + fm.ascent(), elidedCap); + delete p; + mLabel->setPixmap(QPixmap::fromImage(img)); +} + int HoverWindow::pixmapHeight() const{ const QPixmap *pm = mLabel->pixmap(); return pm ? pm->height() : 0; -- cgit v1.2.3-70-g09d2