• 3845阅读
  • 0回复

请教一个事件过滤的问题 [复制链接]

上一主题 下一主题
离线907398237
 
只看楼主 倒序阅读 楼主  发表于: 2010-11-02
— 本帖被 XChinux 执行加亮操作(2010-11-02) —


在一个窗口程序下实现一个取窗口颜色的控件,控件左边是一个颜色填充的矩形,右边是个“画笔”图标
要求:点击“画笔”后,1.禁止窗口上的其他控件响应鼠标事件,这个控件可以响应鼠标事件。2.控件上的
                                               矩形的颜色随着鼠标的移动而变化,颜色就是鼠标的屏幕坐标点的颜色。

我的代码:
void XXX::mousePressEvent(QMouseEvent *event)
{
           if(!m_bPenDown)   //第一次点击画笔
           {
                       pApp->installEventFilter(this);            //   pApp = (QApplication*)QApplication::instance()
                       。。。
            }
           esle  //再次点击画笔            
         {
                        m_bPenDown = false;
            }
}

void XXX::eventFilter(QObject *obj, QEvent *event)
{
      if (event->type() == QEvent::MouseButtonPress)
      {
               if(Qt::LeftButton == ((QMouseEvent*)event)->button())
               {
                            if(鼠标点击发生在控件之外)                          
                           {
                                     获取颜色;
                                     emit  colorChange(XXX);
                                     update();
                            }
                           else
                           {
                                     pApp->removeEventFilter();
                           }
               }
        }
       else if(event->type() == QEvent::MouseMove)
       {
                    获取颜色;
                    update();
       }

         return true;
}
          
主要问题:控件矩形中的颜色不能够随鼠标移动刷新,只有当鼠标再次点击画笔时,颜色才能刷新。
求解决办法!!!




快速回复
限100 字节
 
上一个 下一个