今天主要研究如何在屏幕上绘制点线,以及如何跟踪鼠标活动。目的是将来结合这两者,实现手工在图像上涂抹选择需要修补的区域。
1. 如果要绘制的点线直接显示在住窗口中,则可以直接在mainwindow.h文件中直接定义一个public函数,并在对应的cpp文件中实现,即可。
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QPen pointPen(Qt::red);
pointPen.setWidth(6);
painter.setPen(pointPen);
painter.drawPoint(100,100);
}QPainter对应的画图动作的完成者,QPen指的是完成动作者使用的工具,可定义其颜色,宽度等
QPainter可以对应多种画法,drawLine,drawPoint等等均可。
2. 跟踪鼠标,首先建立一个鼠标检测区域,如label组件,右击项目名,新建一个类,对应该组件,对应的方法是在ui界面右击该组件,选择prompt,选择对应的新建类。这个新建类是组件本身所在类的子类。在这个新建类中,将定义该组件特有的一些SLOT,signal等。如这个label区域是用来检测鼠标区域的,所以特有类包括鼠标按下、移动等SIGNAL,以及产生这些signal的函数。
新建的类my_label.h
#ifndef MY_LABEL_H
#define MY_LABEL_H
#include <QLabel>
#include <QMouseEvent>
#include <QEvent>
class my_label : public QLabel
{
Q_OBJECT
public:
explicit my_label(QWidget *parent = 0);
void mouseMoveEvent(QMouseEvent *ev);
void mousePressEvent(QMouseEvent *ev);
void leaveEvent(QEvent *);
int x,y;
signals:
void mousePressed();
void mousePos();