Qt跟踪鼠标 显示鼠标位置

我是Qt新手,Qt小程序,现在做了一个时间轴,“鼠标不按下,鼠标在时间轴上移动的时候,可以在鼠标边上的一个小提示框内显示鼠标所在处的时间”,不是显示在状态栏,求助前辈,谢... 我是Qt新手,Qt小程序,现在做了一个时间轴,“鼠标不按下,鼠标在时间轴上移动的时候,可以在鼠标边上的一个小提示框内显示鼠标所在处的时间”,不是显示在状态栏,求助前辈,谢谢。希望以代码提示。 展开
 我来答
水焱新火
推荐于2017-12-16 · TA获得超过256个赞
知道小有建树答主
回答量:144
采纳率:100%
帮助的人:125万
展开全部

关键是这一句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);
}
追问

您好   如果我想做的好点  就是鼠标放到某位置的时候边上显示通过下面的提示框,稍微漂亮点,类似于下面的就行,Qt里面得怎么做,有没有现成的?如果要绘制的话,是不是必须要在PaintEvent()函数里面呢??因为我的PaintEvent()函数中做了很多绘制,调用的话总是全部绘制,我不想这样,现在我只是想鼠标移动只绘制这个鼠标提示框需要怎么弄????求助您,谢谢

追答

如果你只是简单的显示,那很容易,把代码稍微转换一下就可以,用系统的提示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就可以了

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式