需要重写控件的mouseMoveEvent方法。
1、自定义一个QLabel控件,然后重写QLabel的mouseMoveEvent
cpp
customlabel.h
#include <QWidget>
#include <QHBoxLayout>
#include <QLabel>
class CustomLabel : public QLabel
{
Q_OBJECT
public:
explicit CustomLabel(QWidget *parent = nullptr);
void setPiture(QString path);
void paintLine(QPoint startPoint, QPoint endPoint);
protected:
void mouseMoveEvent(QMouseEvent* event) override;
signals:
private:
QHBoxLayout* m_layout;
QList<QPoint> m_pointList;
};
cpp
customlabel.cpp
#include "customlabel.h"
#include <QMouseEvent>
#include <QToolTip>
CustomLabel::CustomLabel(QWidget *parent)
: QLabel{parent}
{
setMouseTracking(true);
show();
}
void CustomLabel::mouseMoveEvent(QMouseEvent *event)
{
QPoint pos = event->pos();
QString positionString = QString("X: %1, Y: %2").arg(pos.x()).arg(pos.y());
// 设置工具提示文本
QToolTip::showText(event->globalPos(), positionString, this);
QColor color(Qt::red);
QPalette palette;
palette.setColor(QPalette::Text,color);
QToolTip::setPalette(palette);
}
2、在主界面widget中使用CustomLabel。
cpp
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
CustomLabel* label = new CustomLabel(this);
ui->verticalLayout_2->addWidget(label);
}
3、看效果
鼠标箭头处显示坐标