StupidBeauty
Read times:1257Posted at:Mon Aug 22 21:37:34 2011
- no title specified

鼠标仍在部件的区域里,为什么会收到leaveEvent事件勒?

这是参照韦诺战争的自动滚动功能做的功能,每当鼠标移动到屏幕的最上方或最下方时,会触发整个场景向相应方向滚动。

在具体的实现中,创建两个标签部件 ,分别放到屏幕 的最上方和最下方,并且 让它们在监听到自己的鼠标进入事件和鼠标离开事件时发射信号,两个信号分别触发 一个自动滚动的定时器的启动和停止。

在调试过程中,上方的标签一直是正常地工作的,一旦将鼠标指上去,就会向上滚动。下方 的标签,在今天之前也是正常工作的,将鼠标指上去,会向下滚动。但是今天再次调试 的时候,发 现下方的标签工作不正常咯。

加上代码调试,看看在接收到离开事件时,鼠标指针还在不在标签的区域内。结果一检查,还在的。那么,本座能想到的原因,或者是标签被遮住咯,或者是QT有漏洞。而标签前面并没有放其它的东西。另外假如是QT的漏洞的话,本座暂时也耄耋办法咯。所以本座就开始难过咯。

写这篇勃客是为咯向路过的砖家们请教。

正在写这篇勃客的时候又去摆弄咯一下那个程序,发现在全屏之后,屏幕最下方有一点毛茸茸的感觉,幸亏视力够好,嘿嘿,难道真的有东西吗?有的话会是什么东西勒?想着想着就想出来咯。KDE面板的边缘不就是毛茸茸的吗?嘿嘿。本座的KDE面板设置成咯自动隐藏。这样看来,它的自动隐藏的实现机制也是在隐藏之后留下一条窄窄的线,当鼠标移上去之后就自动弹出面板。由于它位于本座的全屏程序的前面,所以当鼠标移到最下方之后被面板挡住,于是触发咯标签的鼠标离开事件。正好本座有两个面板可以验证。另一个面板是在屏幕的最左边,也是自动隐藏的,它与全屏程序的最上方的标签有一点小小的重叠区域。如果真是面板挡住标签导致的问题的话,那么将鼠标移动到屏幕的最左上角就会发现触发向上滚动过程的标签也失效咯。一试,还真是这样的。

好咯,知道什么原因就可以去想办法解决咯。本文到此为止。

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands