Qt ------ QPainter 和控件组件的重绘
2018-01-22 17:41
1531 查看
使用 QPainter 修改 QPaintDevice 的子类,如果 QPaintDevice 的子类也是 QWidget 的子类,比如自定义QWidget子类、QLabel等,需要把 QPainter 相关语句放入QWidget 子类的 void paintEvent(QPaintEvent *event); 事件函数中。QLabel 等官方 QWidget 子类就需要继承QLabel ,然后重写 void paintEvent(QPaintEvent *event); 函数,否则 Qt creator 会提示如下错误
举例:
hsv_selector_img 是 QImage 对象,QImage 不是 QWidget 子类,不用放入 void paintEvent(QPaintEvent *event); 函数中
QWidget 子类的对象都使用如上语句,需要放入 void paintEvent(QPaintEvent *event); 函数中
以上语句都是错误,因为以上语句没放入 void paintEvent(QPaintEvent *event); 函数中,即是放入也是放入 MainWindow 的函数,而不是 XXX 的函数中
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控件精讲六:显示组件
- QT进程外COM组件之OCX控件华丽转身
- Qt控件精讲三:单元组件
- QT中使用QPainter在ui子控件中绘图
- Qt控件精讲五:输入组件
- Android基础控件——MaterialDesign所有组件的使用,搭建5.0项目的第一步
- VCL组件之编辑控件
- Qt QPainter绘图原理
- 控件与组件的区别
- Qt在控件未显示时如何获取正确的控件尺寸
- 吐血收集的.net组件和控件(G)
- Qt重绘之update,repaint详解
- Qt控件中文乱码的解决办法
- QT常用控件学习
- 工业控制,实时监控,远程管理,数据采集,控件,VC++源代码组件库解决方案
- 大量的QT控件及示例发放
- qt 窗口控件自动调整大小
- qt可停靠控件和工具栏
- Qt for Android调用android原生Toast控件
- 解决方案:带格式化文本控件( RichText)的模板如果在InfoPath的浏览器中加载可能出现 COM 组件的80040154错误