一、新建QT GUI工程,項目名稱「ShapeWidget」, 基類QWidget, 類名ShapeWidget,取消「建立界面」this
二、ShapeWidget.hcode
#ifndef SHAPEWIDGET_H #define SHAPEWIDGET_H #include <QWidget> class ShapeWidget : public QWidget { Q_OBJECT public: ShapeWidget(QWidget *parent = 0); ~ShapeWidget(); protected: void mousePressEvent(QMouseEvent *); void mouseMoveEvent(QMouseEvent *); void paintEvent(QPaintEvent *); private: QPoint dragPosition; }; #endif // SHAPEWIDGET_H
三、get
#include "shapewidget.h" #include <QMouseEvent> #include <QPainter> #include <QPixmap> #include <QBitmap> 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")); }