1、新建QT GUI工程,项目名称“ShapeWidget”, 基类QWidget, 类名ShapeWidget,取消“创建界面”
2、ShapeWidget.h
#ifndef SHAPEWIDGET_H#define SHAPEWIDGET_H#includeclass ShapeWidget : public QWidget{ Q_OBJECTpublic: ShapeWidget(QWidget *parent = 0); ~ShapeWidget();protected: void mousePressEvent(QMouseEvent *); void mouseMoveEvent(QMouseEvent *); void paintEvent(QPaintEvent *);private: QPoint dragPosition;};#endif // SHAPEWIDGET_H
3、
#include "shapewidget.h"#include#include #include #include ShapeWidget::ShapeWidget(QWidget *parent) : QWidget(parent){ QPixmap pix; pix.load("F:\\MyCode\\test1.bmp", 0, Qt::AvoidDither|Qt::ThresholdDither|Qt::ThresholdAlphaDither); resize(pix.size()); setMask(QBitmap(pix.mask()));}ShapeWidget::~ShapeWidget(){}void ShapeWidget::mousePressEvent(QMouseEvent *event){ if(event->button()==Qt::LeftButton) { dragPosition =event->globalPos()-frameGeometry().topLeft(); event->accept(); } if(event->button()==Qt::RightButton) { close(); }}void ShapeWidget::mouseMoveEvent(QMouseEvent *event){ if(event->buttons()&Qt::LeftButton) { move(event->globalPos()-dragPosition); event->accept(); }}void ShapeWidget::paintEvent(QPaintEvent *event){ QPainter painter(this); painter.drawPixmap(0,0,QPixmap("F:\\MyCode\\test1.bmp"));}