• 7074阅读
  • 4回复

******请教如何解决paintEvent和keyPressEvent序列化的问题****** [复制链接]

上一主题 下一主题
离线silentchunk
 
只看楼主 倒序阅读 楼主  发表于: 2008-09-23
— 本帖被 XChinux 执行加亮操作(2008-09-23) —
请教如何解决paintEvent和keyPressEvent序列化的问题

我在之前有开了一个帖子问这个问题,可能是表达的不好,所以大家都没有明白,也不知道如何帮我解决这个问题,我现在重新把这个问题描述一下,希望可以得到大家的帮助.

在我的程序里面我自己做了一个菜单,有一个光标,按键可以控制光标的移动.
当我按键按下的时候,就会去构造菜单的数据,然后触发paintEvent,但是因为Qt的输出速度比较慢,所以在这个时候如果有按键响应进来的时候,就会去排队,等paintEvent事件完成后再进到keyPressEvent里面,可能是刚好这个时间差的问题,按键的每一次响应都会被输出,所以造成速度非常的慢.

是否有办法让paintEvent或者keyPressEvent在另一个线程中去响应,就是多线程来处理这个问题,我不知道怎样来实现这个.

或者是否有办法在非paintEvent里面做输出,就是可以在任意地方都可以使用QPainter来画,这样就不用去响应paintEvent了,

多谢各位了~

离线suraid
只看该作者 1楼 发表于: 2008-09-23
我曾经也试图去解决过这个问题。。。
1,QT不愿意让你用多线程的方法来解决
2,也不推荐去屏蔽事件,因为这样可能会导致别的有用的事件无法响应,除非你知道这是哪个事件
其实就连windows在慢的时候也有这个问题的,如果非要想解决的话就看看我第二条和那个“除非”吧
SuRaid团队主要承接嵌入式、Web、美工、算法设计等业务

团队网址: http://www.suraid.cn
团队博客: http://blog.suraid.cn
团队邮箱: bbs@esuraid.com
离线sbtree
只看该作者 2楼 发表于: 2008-09-23
你的意思是按键触发了两个事件一个是keyPressEvent,一个是paintEvent,而paintEvent反应缓慢又被后来的keyPressEvent抢占先,致使菜单显示花了更长的时间?我是这么理解的,不知道对不对
有一点不明白,你是想按下任意键都构造你的菜单吗?
windows 7 + VC++2008 + Qt4.5.2
离线silentchunk
只看该作者 3楼 发表于: 2008-09-24
多谢两位,

按键按下后会触发keyPressEvent事件,另外我有一个timer在走(步进处理渲染用的),timer会触发paintEvent,paintEvent反应缓慢,所以后面的keyPressEvent需要等待.没有办法做到时时响应.
离线sbtree
只看该作者 4楼 发表于: 2008-09-25
引用第3楼silentchunk于2008-09-24 09:50发表的  :
多谢两位,
按键按下后会触发keyPressEvent事件,另外我有一个timer在走(步进处理渲染用的),timer会触发paintEvent,paintEvent反应缓慢,所以后面的keyPressEvent需要等待.没有办法做到时时响应.

考虑用多线程吧,单线程难以解决
windows 7 + VC++2008 + Qt4.5.2
快速回复
限100 字节
 
上一个 下一个