Qt QPainter 和控件组件的重绘

admin 2022年10月11日12:31:49评论66 views字数 733阅读2分26秒阅读模式

使用 QPainter 修改 QPaintDevice 的子类,如果 QPaintDevice 的子类也是 QWidget 的子类,比如自定义QWidget子类、QLabel等,需要把 QPainter 相关语句放入QWidget 子类的 void paintEvent(QPaintEvent *event); 事件函数中。QLabel 等官方 QWidget 子类就需要继承QLabel ,然后重写 void paintEvent(QPaintEvent *event); 函数,否则 Qt creator 会提示如下错误

QWidget::paintEngine: Should no longer be called

QPainter::begin: Paint device returned engine
== 0, type: 1

QPainter::setBrush: Painter not active

 

举例:

QPainter painter(hsv_selector_img);

hsv_selector_img 是 QImage 对象,QImage 不是 QWidget 子类,不用放入 void paintEvent(QPaintEvent *event); 函数中

QPainter painter(this);

QWidget 子类的对象都使用如上语句,需要放入 void paintEvent(QPaintEvent *event); 函数中

QPainter painter(ui->XXX);

以上语句都是错误,因为以上语句没放入 void paintEvent(QPaintEvent *event); 函数中,即是放入也是放入 MainWindow 的函数,而不是 XXX 的函数中

Qt ------ QPainter 和控件组件的重绘


原文始发于微信公众号(汇编语言):Qt ------ QPainter 和控件组件的重绘

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月11日12:31:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Qt QPainter 和控件组件的重绘https://cn-sec.com/archives/1342349.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息