qt中文字图片跟随鼠标移动

//未添加注释部分请自行查阅qt中帮助文档(F1)

mainwindow.h中:

#include <QMainWindow>

#include <QMouseEvent>

class MainWindow : public QWidget{  

Q_OBJECTpublic: MainWindow(QWidget *parent = 0);  

~MainWindow();  

void mouseMoveEvent(QMouseEvent * event);  

void paintEvent(QPaintEvent *);

private: int x,y;  

QString str;  

QPoint p;

};

mainwindow.cpp中:

#include "mainwindow.h"

#include <QPainter>

MainWindow::MainWindow(QWidget *parent) : QWidget(parent){  

setPalette(QPalette(Qt::white));  

setAutoFillBackground(true);  

setMinimumSize(400,400);  

str = "西北农林科技大学";  

setMouseTracking(true); //若没有此项则需点击鼠标才能触发mouseMoveEvent事件}void MainWindow::mouseMoveEvent(QMouseEvent * event){ 

x=event->pos().x();  

y=event->pos().y();  

update();

}

void MainWindow::paintEvent(QPaintEvent *){

QPainter paint(this);

paint.setPen(Qt::green);

p=QPoint(x,y);

paint.setBrush(Qt::yellow);

paint.drawEllipse(p,50,50);

paint.drawText(x,y,str);

}

MainWindow::~MainWindow(){}

Qt,实现tracer(跟踪器)跟随鼠标移动通常需要创建一个`QGraphicsView`并与鼠标事件处理器关联。tracer通常是通过绘制一条线或者一个图形元素(如矩形)来表示鼠标位置的。以下是基本步骤: 1. 首先,你需要在窗体添加一个`QGraphicsView`作为容器,并创建一个`QGraphicsScene`。 ```cpp QGraphicsView *view = new QGraphicsView(parent); QGraphicsScene *scene = new QGraphicsScene(view); ``` 2. 将场景添加到视图: ```cpp view->setScene(scene); ``` 3. 创建一个`QGraphicsLineItem`或者`QGraphicsRectItem`作为tracer,并将其添加到场景: ```cpp QGraphicsLineItem *tracer = new QGraphicsLineItem(); scene->addItem(tracer); ``` 4. 接下来,你需要设置鼠标按下、拖动和释放事件处理器来更新tracer的位置。当鼠标按下时,开始追踪;当鼠标拖动时,更新tracer的终点;当鼠标释放时,结束追踪。 ```cpp connect(view, &QGraphicsView::mouseMoveEvent, [tracer](QGraphicsSceneMouseEvent *event) { tracer->setPos(event->scenePos()); // 更新tracer的起点 }); // 或者使用矩形追踪器 QGraphicsRectItem *tracerRect = new QGraphicsRectItem(); tracerRect->setPen(QPen(Qt::blue)); connect(view, &QGraphicsView::mouseMoveEvent, [tracerRect](QGraphicsSceneMouseEvent *event) { QRectF rect = QRectF(event->scenePos(), QSizeF(0, 0)); // 拖动矩形,起点和终点相同 tracerRect->setRect(rect); }); ``` 5. 为了美观,你可能还需要调整tracer的样式,例如颜色、宽度、线型等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值