Qt paintEvent事件 显示图片文字

Qt paintEvent事件 显示图片文字,第1张

paintEvent事件可以重新绘制全部或者部分窗口,任何从QWidget派生的类都可以进行重绘。

paintEvent事件的发生可能有以下几个原因:

(1)repaint()或者update()被调用

(2)这个窗体之前被隐藏,重新显示时

(3)或者一些其他原因(官方文档这样写的)

其中,update()不是立即调用paintEvent(),要等Qt返回主事件循环后才会进行,而调用repaint()会立即调用paintEvent()函数来重绘窗口。

在进行绘制时,通过Qpainter类进行绘图,例如通过以下函数:

(1)void drawPixmap(const QRect &rectangle, const QPixmap &pixmap):填充图片

(2)void fillRect(const QRect &rectangle, Qt::GlobalColor color):填充颜色

(3)void drawText(const QRect &rectangle, int flags, const QString &text, QRect * boundingRect = 0):t填充文字

举例:自定义按钮实现图片文字显示,其中文字显示在图片下方。

void DyClickImageButton::paintEvent(QPaintEvent *)

{

        QPainter painter(this)

        QPixmap pixmap

        pixmap.load(m_picname)

        painter.drawPixmap(QRect(0,0,this->width(),pixmap.height()),pixmap)

        painter.drawText(this->rect(), Qt::AlignHCenter | Qt::AlignBottom, m_picName)

其中DyClickImageButton是从QPushButton派生出来的类,m_picname为图片的路径,当用DyClickImageButton类进行创建按钮时,将图片绘制到该按钮上。

最好用update()来刷新,调用这个方法不会马上刷新,但一般情况下可以刷新过来的,若用repaint()会立即刷新,有可能会卡的;至于说没有走到paintEvent(),最好在这里面加个打印信息看看,按你上面写的是会进去的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11939264.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存