本文主要是介绍《QT实用小工具·二十一》鼠标十字线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、概述
源码放在文章末尾
该项目实现了界面绘制十字线并跟随鼠标移动的过程,下面是demo演示:
项目部分代码如下:
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();protected:void mouseMoveEvent(QMouseEvent *event);void mouseReleaseEvent(QMouseEvent *event);void paintEvent(QPaintEvent *);private:Ui::Widget *ui;QPoint lastPos;
};#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include "qpainter.h"
#include "qevent.h"
#include "qdebug.h"Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setMouseTracking(true);
}Widget::~Widget()
{delete ui;
}void Widget::mouseMoveEvent(QMouseEvent *event)
{lastPos = event->pos();update();
}void Widget::mouseReleaseEvent(QMouseEvent *event)
{//这里是鼠标按下的坐标,自己存到数据库lastPos = event->pos();update();qDebug() << lastPos;
}void Widget::paintEvent(QPaintEvent *)
{QPainter painter(this);QPen pen;pen.setWidth(5);pen.setColor(Qt::red);painter.setPen(pen);//绘制横向线painter.drawLine(0, lastPos.y(), width(), lastPos.y());//绘制纵向线painter.drawLine(lastPos.x(), 0, lastPos.x(), height());
}
源码下载
这篇关于《QT实用小工具·二十一》鼠标十字线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!