Qt鼠标事件

创建mylabel.h

#ifndef MYLABEL_H
#define MYLABEL_H
#include <QLabel>
#include <QMouseEvent>
class myLabel : public QLabel
{
public:
    myLabel(QWidget *);
protected:
    void mousePressEvent(QMouseEvent *ev);
    void mouseReleaseEvent(QMouseEvent *ev);
    void mouseMoveEvent(QMouseEvent *ev);
private:
    bool moving;
    QPoint lastPos;
};
#endif  // MYLABEL_H

mylabel.cpp

#include "mylabel.h"
myLabel::myLabel(QWidget *parent) : QLabel(parent)
{
    moving = false;
}

void myLabel::mousePressEvent(QMouseEvent *ev)
{

    setText(QString("Press: %1, %2").arg(QString::number(ev->x()),
                                        QString::number(ev->y())));

    lastPos = ev->globalPos();
    moving = true;
}

void myLabel::mouseReleaseEvent(QMouseEvent *ev)
{

    setText(QString("Release: %1, %2").arg(
                 QString::number(ev->x()), QString::number(ev->y())));

    moving = false;
}

void myLabel::mouseMoveEvent(QMouseEvent *ev)
{

    setText(QString("Move: %1, %2").arg(
                 QString::number(ev->x()), QString::number(ev->y())));

    if (moving) {

        QPoint delta = ev->globalPos() - lastPos;

        QPoint new_pos = this->pos() + delta;
        this->move(new_pos);

        lastPos = ev->globalPos();
    }
}

创建widge.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "mylabel.h"
Widget::Widget(QWidget *parent)  : QWidget(parent)
{
    myLabel *label = new myLabel(this);     // 创建标签对象
    label->setAlignment(Qt::AlignCenter);   // 设置对齐方式
    label->resize(260, 150);
    label->show();
}
Widget::~Widget()
{  }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值