如果要把贴到这两个控件上的话都已经有接口函数了setPixmap()setIcon(),
如果非要自己用drawPixmap()来画的话,你就要重载这些控件的paint()函数在paint()函数里面构造一个 painter 用那个painter来画
为了能在QVariant中使用自定义数据类型做,需要使用Q_DECLARE_METATYPE()来向Qt的元系统声明这个自定义类型。如下列所示: struct Player { }; Q_DECLARE_METATYPE(Player);
先上图一张
主要是使用了QPainter的叠加:
[cpp] view plaincopy
pTmpsetCompositionMode(QPainter::CompositionMode_Source);
pTmpfillRect(QRect(0, 0, paintw, rtTextheight()), QBrush(Qt::white));
pTmpfillRect(QRect(0, 0, mPrecent, rtTextheight()), QBrush(Qt::blue));
pTmpsetCompositionMode(QPainter::CompositionMode_DestinationIn);
pTmpdrawImage(0, 0, pmMask);
pTmpsetCompositionMode(QPainter::CompositionMode_DestinationOver);
主要函数:
void testLyrics::DrawLyric(QPainter &p, const QRect& rt)
{
psetBrush(Qt::darkGray);
pdrawRect(rect());
const QString strLyric = mCurLyricslyric;
QFont m_ftLyric(QString::fromLocal8Bit("微软雅黑"), 24, QFont::Bold);
QPainter pTmp;
QFontMetrics fm(m_ftLyric);
QSize textSize = fmsize(Qt::TextSingleLine, strLyric);
QRect textRect(QPoint(0,0),textSize);
int paintw = textSizewidth();
int playedW = textSizewidth()05;
QRect rtText = rect();
// pTmpsetRenderHints(QPainter::TextAntialiasing, true);
QImage pmMask(paintw, rtTextheight(),QImage::Format_ARGB32);
pmMaskfill(Qt::transparent);
if (pTmpbegin(&pmMask))
{
pTmpsetFont(m_ftLyric);
pTmpsetPen(Qt::black);
pTmpdrawText(pmMaskrect(), strLyric);
}
pTmpend();
QImage pmFG(paintw, rtTextheight(),QImage::Format_ARGB32);
if (pTmpbegin(&pmFG))
{
pTmpsetCompositionMode(QPainter::CompositionMode_Source);
pTmpfillRect(QRect(0, 0, paintw, rtTextheight()), QBrush(Qt::white));
pTmpfillRect(QRect(0, 0, mPrecent, rtTextheight()), QBrush(Qt::blue));
pTmpsetCompositionMode(QPainter::CompositionMode_DestinationIn);
pTmpdrawImage(0, 0, pmMask);
pTmpsetCompositionMode(QPainter::CompositionMode_DestinationOver);
// shadow
pTmpsetFont(m_ftLyric);
pTmpsetPen(QColor(0,0,0,0x80));
pTmpdrawText(pmMaskrect(), strLyric);
}
pTmpend();
pdrawImage(rtTextleft(), rtTexttop(), pmFG);
}
以上就是关于求大侠帮助:QT如何使用QPainter的drawPixmap()函数可以把这个文件绘制到一个QLabel、QPushButton或者其他全部的内容,包括:求大侠帮助:QT如何使用QPainter的drawPixmap()函数可以把这个文件绘制到一个QLabel、QPushButton或者其他、关于Qt中的写屏类 QDirectPainter,该怎么解决、QT编程读取歌词等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)