Qt ------ QPainter 和控件组件的重绘
2023-09-11 14:19:53 时间
使用 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 QString与QByteArray互转(字符串与byte数组互转)
- 在Qt中使用全局变量的两种方式,及出现无法解析的命令的问题
- Qt中标准对话框实例,QObject::tr()的作用
- 基于 QT(C++) 开发的贪吃蛇游戏【100010582】
- 基于QT(C++)+CSV文件存储开发(WinForm)图书管理系统【100010008】
- QT工具——qt for vs
- Qt音视频开发09-ffmpeg内核音视频同步
- Qt编写安防视频监控系统23-图片地图
- Qt编写气体安全管理系统4-通信协议
- qt widget设置Qt::FramelessWindowHint和Qt::WA_TranslucentBackground, 会出现一个bug: 在最小化后还原时界面停止刷新(Qt5.1解决了这个问题。但实际Qt5.7还有这个问题)
- QT中|Qt::Tool类型窗口自动退出消息循环问题解决(setQuitOnLastWindowClosed必须设置为false,最后一个窗口不显示的时候,程序会退出消息循环)
- Install Qt 5 on Ubuntu(使用qt-opensource-linux-x64-5.7.0.run进行安装,而且是官方的wiki)
- Qt之解析XML(QXmlStreamReader)
- 报错 qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it was found
- Qt编程之右键单击QTreeWidgetItem弹出菜单
- VS2010使用静态编译的qt库(Qt 5)
- Qt ------ 覆盖eventFilter(),捕获组件事件,事件处理
- Qt 有多少人折腾-qt for s60终于安装成功
- 【正点原子Linux连载】第一章Ubuntu下安装Qt Creator 摘自【正点原子】ATK-DLRV1126Qt开发环境搭建手册