Qt跟踪鼠标 显示鼠标位置
我是Qt新手,Qt小程序,现在做了一个时间轴,“鼠标不按下,鼠标在时间轴上移动的时候,可以在鼠标边上的一个小提示框内显示鼠标所在处的时间”,不是显示在状态栏,求助前辈,谢...
我是Qt新手,Qt小程序,现在做了一个时间轴,“鼠标不按下,鼠标在时间轴上移动的时候,可以在鼠标边上的一个小提示框内显示鼠标所在处的时间”,不是显示在状态栏,求助前辈,谢谢。希望以代码提示。
展开
1个回答
展开全部
关键是这一句setMouseTracking(true);加在构造函数里面,根据qt的帮助文档,mousemoveEvent事件如果mouserTrack为false,那么只有鼠标按下才会执行,而且默认是false,所以需要把窗口事件设置一下
然后就简单了
protected:
void mouseMoveEvent(QMouseEvent * event);//添加mouseMover事件响应
//下面具体代码
void GetMousePoint::mouseMoveEvent(QMouseEvent *event)
{
QString pStr("%1,%2");
pStr = pStr.arg(event->pos().x()).arg(event->pos().y());//这里pos是坐标,你把坐标按比例转换为你的刻度尺就可以了
ui->label->setText(pStr);
}
追问
追答
如果你只是简单的显示,那很容易,把代码稍微转换一下就可以,用系统的提示tooltip
QString pStr("%1,%2");
pStr = pStr.arg(event->pos().x()).arg(event->pos().y());
//ui->label->setText(pStr);
//this->setToolTip(pStr);//这个也 可以,但是多一个事件,速度慢一点
QToolTip::showText(mapToGlobal(event->pos()) ,pStr);
但是如果你要做的漂亮,就自己写一个窗口B,然后重写B的重绘字符串
然后在你现在的父窗口A里面new一个B,然后show B就可以了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询