在一个窗口程序下实现一个取窗口颜色的控件,控件左边是一个颜色填充的矩形,右边是个“画笔”图标。
要求:点击“画笔”后,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;
}
主要问题:控件矩形中的颜色不能够随鼠标移动刷新,只有当鼠标再次点击画笔时,颜色才能刷新。
求解决办法!!!