主题 : 关于Qtopia中事件的用法请教各位 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 5302
精华: 0
发帖: 110
金钱: 550 两
威望: 110 点
综合积分: 220 分
注册时间: 2009-04-18
最后登录: 2021-05-31
楼主  发表于: 2010-10-08 22:21

 关于Qtopia中事件的用法请教各位


最近本人在友善的mini2440上做一个小项目,需要实现的目标非常简单----类似于Windows的屏保程序。
基本思路是:当我的GUI程序在1分钟内没有鼠标点击,移动事件时,即启动屏保,进入屏保程序后若系统捕捉到鼠标点击事件发生即结束屏保。

在头文件中声明事件
protected:
    bool event( QEvent* );  

在cpp文件中:
bool from1::event( QEvent* ev )
{
    if ( ev->type() == QEvent::MouseMove )
        print_Button->setText( QString::fromUtf8("测试事件") );
        if ( ev->type() == QEvent::MouseButtonPress )
            {
                print_Button->setText( QString::fromUtf8("鼠标按下") );
            }
            if ( ev->type() == QEvent::MouseButtonRelease )
            {
                print_Button->setText( QString::fromUtf8("鼠标抬起") );
            }
      return QWidget::event( ev );
}

其中print_Button即为窗体中的一个 QPushButton*
意图很简单,当窗体接收到QEvent::MouseMove事件时,print_Button上面能显示“测试事件”。当收到QEvent::MouseButtonPress时按钮显示“鼠标按下”
但是程序运行结果却是print_Button上始终显示from1初始化时的内容。
奇怪的是当我把if ( ev->type() == QEvent::MouseMove ) 改成 if ( ev->type() == QEvent::WindowActive) 在程序运行后它可以显示相应的汉字。
平台:友善提供的128M Micro2440开发板 + gcc4.3.2 +linux2.6.29.4
在线等各位大侠的回复!急!!!
级别: 侠客
UID: 5302
精华: 0
发帖: 110
金钱: 550 两
威望: 110 点
综合积分: 220 分
注册时间: 2009-04-18
最后登录: 2021-05-31
1楼  发表于: 2010-10-09 10:50
呼叫版主大侠前来救命~~~~
级别: 侠客
UID: 5302
精华: 0
发帖: 110
金钱: 550 两
威望: 110 点
综合积分: 220 分
注册时间: 2009-04-18
最后登录: 2021-05-31
2楼  发表于: 2010-10-09 13:31
事情有新的发现,不过本人对于图形化编程基础知识有些欠缺,不能以专业的语言去描述现象。还请原谅哈子
from1所在的区域(200*100)无论鼠标如何操作,事件都是无法响应的。
但是,如果我将from1窗体用鼠标拉伸后,事件是可以在新拉伸出来的区域内响应鼠标事件的。
例如,窗本本身是宽200 高100的,若将其用鼠标拉伸后变成宽400高200的窗体,
这时候如果鼠标坐标在(201,101)---(400,200)区间动作时,事件都是可以响应的

请教各位大侠,如何解决这种问题