
最近本人在友善的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
在线等各位大侠的回复!急!!!