• 8316阅读
  • 3回复

[提问]QPixmap基本概念问题? [复制链接]

上一主题 下一主题
离线cfxqm
 
只看楼主 倒序阅读 楼主  发表于: 2011-01-24
— 本帖被 XChinux 执行加亮操作(2011-01-26) —
我学的是Python及PYQT,没学过C++,只能对C++的代码做些猜测。
QPixmap有几个问题
1、在QWidget上使用QPixmap,QPixmap和QWidget是什么关系?QWidget上使用setAutoFillBackground(True)、    setPalette(QPalette(Qt.black))已经对背景色填充,那么QPixmap.fill()填充的是哪儿?我的理解是QPixmap刚建立时是在内存某个地方画图,需要的时候再用QPainter.drawPixmap画到QWidget上显示出来。不知是否正确?
2、使用QPixmap的方式:
  1. pix = QPixmap()
  2. painter = QPainter(pix)
  3. npainter = QPainter()

其中painter和npainter 有什么区别?painter 是在QPixmap上画图,而不是在QWidget上画图吗?如果是在QPixmap上画图,如何再画到QWidget上,是否使用QPainter.drawPixmap方式?如果采用
npainter = QPainter()方式,如何才能画到QPixmap上(或者不能采用这种方式?)
3、是否一个QWidget上只能使用一个QPainter()?是否可以用pix = QPixmap()这种方式生成几个QPixmap?
4、能否将几个QPixmap重叠显示在一个QWidget上,上面的QPixmap透明显示?

谢谢!
离线XChinux

只看该作者 1楼 发表于: 2011-01-24
QPixmap你就将它想像成一个变量,QPixmap.fill()是对这个变量自己的操作。
这个变量是否在界面上显示,与它自己没关系的。界面不显示,也不影响这个QPixmap对象的存在。
[ 此帖被XChinux在2011-01-24 22:26重新编辑 ]
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线梅克斯
只看该作者 2楼 发表于: 2011-01-25
1.QPixamp相当于一张画布,绘制都是在这张画布上,QWidget就像一个画板,把画布贴到画板上就可以看到画布画的东西了

2.painter是在QPixmap上画图,因为之前有指定了QPixmap这张画布的画板式QWidget,所以在画布上画,在画板上也可以看出来

3.不知道是否一个QWidget上只能使用一个QPainter()
  可以用pix = QPixmap()这种方式生成几个QPixmap

4.可以重叠,就像一张画板上可以贴上很多画布

以上是我的理解...
离线cfxqm
只看该作者 3楼 发表于: 2011-01-26
谢谢各位指点,我再研究下。
快速回复
限100 字节
 
上一个 下一个