#ifndef WIDGET_H
#define WIDGET_H
#include
#include
#include
#include
#include
#include
class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = 0); ~Widget(); protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *evnet); void paintEvent(QPaintEvent *); private: QPoint dragPosition; }; #endif // WIDGET_H #include "widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) { QPixmap pix; pix.load(":/20.png"); resize(pix.size()); setMask(QBitmap(pix.mask())); //重点在这里 } Widget::~Widget() { } void Widget::mousePressEvent(QMouseEvent *event) { if(event->button() == Qt::LeftButton) { dragPosition = event->globalPos() - frameGeometry().topLeft(); event->accept(); } if(event->button() == Qt::RightButton) { close(); } } void Widget::mouseMoveEvent(QMouseEvent *event) { if(event->buttons() & Qt::LeftButton) { move(event->globalPos() - dragPosition); event->accept(); } } void Widget::paintEvent(QPaintEvent *) { QPainter painter(this); painter.drawPixmap(0,0,QPixmap(":/20.png")); } #include "widget.h" #include
int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); }