Qt paintEvent事件显示图片文字

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类进行创建按钮时,将图片绘制到该按钮上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值