• 4690阅读
  • 5回复

再问一个图形刷新问题------困扰好久,请赐教! [复制链接]

上一主题 下一主题
离线mivastudy
 
只看楼主 倒序阅读 楼主  发表于: 2009-07-06
最近编程时遇到绘制图形出现问题,好几天都没做好,希望高手赐教!问题如下:
问题一:使用QPainter类在按钮上绘制图形,绘制代码没问题,将绘制代码放在一slot中,若是点击按钮触发此slot,能够成功绘制出图形来;但若是在init函数中让其执行此slot则绘制不出来,为什么?init函数明明就执行了,这个slot也执行了,可就是显示不出图形来,真不知道怎么回事!是否还需要刷新函数?试了update()和repaint(),都不行。

问题二:我使用点击按钮关联slot方法绘制出图形后,画完后将窗体最小化,再恢复,则所画内容全部消失。
已经重载了paintEvent函数,并将绘制图形的函数放在其内,使用qWarning函数也发现paintEvent函数已经执行,但好似没有起到什么作用。
重载了moveEvent,resizeEvent函数,也将绘制图形函数放入其内,发现这两个函数还是很管用的,只要发生相应事件,则立即绘制图形。
但我需要在初始化对话框时已经将图形绘制在按钮上,一旦用户最小化窗口后再恢复还能看到绘制的按钮,不能总靠moveEvent和resizeEvent这两个事件来执行相应绘制代码。

还有其他什么刷新函数吗?或是还要重载什么函数?

这个问题已经困扰我好几天了,谁能帮帮我,谢谢了!
离线mivastudy
只看该作者 1楼 发表于: 2009-07-06
顶,自己顶!
离线浪漫天使
只看该作者 2楼 发表于: 2009-07-06
问题1是你太急了,等init完了再画 可以么,而不要在init里面画
问题2肯定也是画了,估计是你先画了,但是系统后面又画了,就把你画的抹掉显示的是系统画的。
离线mivastudy
只看该作者 3楼 发表于: 2009-07-06
嗯??我希望用户一打开对话框时图形已经在按钮上显示出来,如果不在init()函数中画,那要在哪里画呢?

可是怎么样让系统不画,我来画呢?

多谢了!
离线xjcook

只看该作者 4楼 发表于: 2009-07-06
应该在paintEvent中画,否则会被刷掉,至于为什么你说在paintEvent中画没反应,再找吧。

另外,你看可不可以把要画的东西画在一个图片上,然后把图片设置到按钮上,这样子刷新就不用自己处理了。
如果图片需要变化的时候,再画一下更新上去。
离线mivastudy
只看该作者 5楼 发表于: 2009-07-06
不能画在图片上,要求随时能该所画内容。
我看看,再请教!
快速回复
限100 字节
 
上一个 下一个