错误案例(QPaintDevice: Cannot destroy paint device that is being painted)
今天,帮一网友改程序,非常郁闷,一个小bug找了很就,于是把程序写下,作下记录:
程序的功能大致是,点击四个按钮,分别显示四个图片在窗口!
先上程序:
__author__ = 'Administrator'
try:from PySide import QtCorefrom PySide import QtGui
except ImportError:from PyQt4 import QtCorefrom PyQt4 import QtGui
class Mainwindow(QtGui.QWidget):def __init__(self):super(Mainwindow,self).__init__()self.img1=QtGui.QImage("D:\myicon.jpg")self.img2=QtGui.QImage("D:\one.jpg")self.img3=QtGui.QImage("D:\m2yicon.jpg")self.img4=QtGui.QImage("D:\myi3con.jpg")button1 = QtGui.QPushButton("1")button2 = QtGui.QPushButton("2")button3 = QtGui.QPushButton("3")button4 = QtGui.QPushButton("4")button1.clicked.connect(self.slotbutton1)button2.clicked.connect(self.slotbutton2)button3.clicked.connect(self.slotbutton3)button4.clicked.connect(self.slotbutton4)buttonlayout = QtGui.QHBoxLayout()buttonlayout.addWidget(button1)buttonlayout.addWidget(button2)buttonlayout.addWidget(button3)buttonlayout.addWidget(button4)mainlayout = QtGui.QVBoxLayout()mainlayout.addLayout(buttonlayout)self.setLayout(mainlayout)self.showimg = self.img1self.resize(self.showimg.width(),self.height())def paintEvent(self, e):painter = QtGui.QPainter(self)painter.drawImage(0,0,self.showimg)self.resize(self.showimg.width(),self.height())def slotbutton1(self):self.showimg = self.img1self.repaint()def slotbutton2(self):self.showimg = self.img2self.repaint()def slotbutton3(self):self.showimg = self.img3self.repaint()def slotbutton4(self):self.showimg = self.img4self.repaint()if __name__ == '__main__':import sysapp = QtGui.QApplication(sys.argv)mainwindow = Mainwindow()mainwindow.show()sys.exit(app.exec_())
我遇到的错误是什么呢?
下面这个代码片段是我改过的
painter = QtGui.QPainter(self)painter.drawImage(0,0,self.showimg)
我没改之前是什么呢:
self.painter = QtGui.QPainter(self)self.painter.drawImage(0,0,self.showimg)
错误信息是:QPaintDevice: Cannot destroy paint device that is being painted
我对self.a和a的理解是,带了self的话,会是a的作用域变为整个对象域,不加的话,就是整个函数域
所以,我们得记住重载paintEvent()函数的时候,里面的Qpainter()对象一定不能带self,不然就会出现析构错误.
错误案例(QPaintDevice: Cannot destroy paint device that is being painted)相关推荐
- QPaintDevice: Cannot destroy paint device that is being painted
在paintEvent中,使用QPainter * 绘制图像出现此问题.解决: 1.改为不使用QPainter指针. 2.添上 save()和restore()函数 QPainter paint ...
- 菜鸟修炼笔记--QT--“QPaintDevice: Cannot destroy paint device that is being painted”
菜鸟修炼笔记--QT--"QPaintDevice: Cannot destroy paint device that is being painted" 前言 一.出错代码 二. ...
- AIX 5.3安装Oracle 10g错误案例--ruInstaller
AIX 5.3安装Oracle 10g错误案例--runInstaller 系统环境: 操作系统: AIX5300-08 Oracle软件:Oracle 10g(64位) 错误现象: 客户一个A ...
- QPainter::begin: Paint device returned engine == 0, type: 2 解决方法,在使用第三方库Qt可视化节点编辑器时
QT节点编辑器:https://github.com/paceholder/nodeeditor 在使用的时候,沿着对角线缩放节点会出现崩溃的情况 报出来的错误却是:Qt begin: Paint d ...
- QPainter的使用过程中遇到的一些问题,QWidget::paintEngine: Should no longer be called QPainter::begin: Paint device
报错信息 QWidget::paintEngine: Should no longer be called QPainter::begin: Paint device returned engine ...
- Oracle RAC错误之--oifcfg错误案例
Oracle RAC错误之--oifcfg错误案例 系统环境: 操作系统:RedHat EL5 Cluster: Oracle GI(Grid Infrastructure) Oracle: Ora ...
- AIX 访问Linux NFS共享错误案例
AIX 访问Linux NFS共享错误案例 系统环境: 操作系统: RedHat EL4.AIX 5.3 错误现象: Linux 作为NFS Server ,AIX host 作为NFS Client ...
- 遇到 ORACLE 错误 1115,ORA-01114、ORA-27067错误案例一则
ORA-01114.ORA-27067错误案例一则 今天有朋友问到如下一则案例,ORA-01114,ORA-27067以及OSD-04026错误同时出现: *** ACTION NAME:() 200 ...
- MySQL数据库“十宗罪”(十大经典错误案例)
各位技术老铁们,福利来了!今天给大家说说<数据库中十大经典错误案例> 老张我在刚开始学习数据库的时候,没少走弯路.经常会遇到各种稀奇古怪的 error 信息,遇到报错会很慌张,急需一个解决 ...
最新文章
- 【OpenGL】十四、OpenGL 绘制三角形 ( 绘制 GL_TRIANGLE_STRIP 三角形 | GL_TRIANGLE_STRIP 三角形绘制分析 )
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- python 简单图像处理(8) 直方图均衡化
- 剪刀,石头,布,小游戏脚本
- SSD硬盘 全盘安全擦除
- Android 进程常驻(5)----开机广播的简单守护以及总结
- 开源 协作工具_使用HackMD在开源项目上进行协作
- ai人工智能的数据服务_从AI数据集中消除无意识的偏见
- 图片上添加文字--div
- Win10电脑如何查看本机mac地址
- BZOJ2325[ZJOI2011]道馆之战——树链剖分+线段树
- python爬虫可以做哪些好玩的地方_如何快速的找到好玩的旅游景点信息?Python爬虫帮你轻松解决...
- goods购物表MySQL的代码_python采用sqlachmy购物商城
- Oracle数据库索引使用及索引失效总结
- JAVA回合制pk游戏
- Markdown文档编写规则:标题
- 国际网页短信平台搭建|后台定制-移讯云短信系统
- java定义一个周长类三角形_point类 三点的三角形的周长、面积 编程求解矩形和圆面积 java 三角形的定义...
- 2020哔哩哔哩大数据面试题整理
- android 运行apk时崩溃,从Android Studio运行时安装APK时应用程序崩溃完美无缺