查看完整版本: [-- Qt如何把QPainter绘图对象作为参数传递给业务类,由业务类完成绘图操作? --]

QTCN开发网 -> Qt基础编程 -> Qt如何把QPainter绘图对象作为参数传递给业务类,由业务类完成绘图操作? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

ustone 2018-05-15 09:22

Qt如何把QPainter绘图对象作为参数传递给业务类,由业务类完成绘图操作?


Qt如何把QPainter绘图对象作为参数传递给业务类,由业务类完成绘图操作?
比如在窗体类中new一个业务类,把QPainter绘图对象作为业务类构造函数的参数传递进去,在业务类的多个成员函数中完成不同的绘图操作,大概要怎么弄?

ustone 2018-05-15 11:25
我用另一种办法解决了,绘制到QPixmap上,label->setPixmap()显示之,两者指针都作为参数传给业务类构造函数。

ustone 2018-05-16 08:36
ustone:我用另一种办法解决了,绘制到QPixmap上,label->setPixmap()显示之,两者指针都作为参数传给业务类构造函数。 (2018-05-15 11:25) 

这种办法,QTimer定时器里调用大量重绘的话,性能很差亚,画面更新不流畅,进程占用CPU超过20%(笔记本三代i5四线程CPU,换算成单线程超过80%)。
同样的测试程序,用C++ Builder改写的,画面流畅,进程占用CPU仅1%~3%(编译选项未优化)。

不知道直接绘制到QPainter对象上性能会不会好点,
问题还是Qt如何把QPainter绘图对象作为参数传递给业务类,由业务类完成绘图操作?

jigetage 2018-05-16 10:33
有位置参数,QPainter在哪里绘制不都一样吗

ustone 2018-05-16 20:02
jigetage:有位置参数,QPainter在哪里绘制不都一样吗 (2018-05-16 10:33) 

QPainter(this)对象只能在paintEvent函数中绘制。

一米阳光 2018-05-17 10:32
图形数据可以保存起来,传递给业务类,业务类进行绘图(在Qt里面定义一个结构体,用来保存图形数据即可)

ustone 2018-05-17 20:55
一米阳光:图形数据可以保存起来,传递给业务类,业务类进行绘图(在Qt里面定义一个结构体,用来保存图形数据即可) (2018-05-17 10:32) 

不是这个问题~

ustone 2018-05-18 23:13
我那个程序改成整个刷新重绘了,在paintEvent里以QPainter(this)引用为参数调用业务类的绘制函数,CPU占有率降低到0,偶尔1。


查看完整版本: [-- Qt如何把QPainter绘图对象作为参数传递给业务类,由业务类完成绘图操作? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled