创建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()
{ }