各位好,今天学习mouseevent的重载,结果貌似很悲剧。就是不成功。代码如下:
#include"shape-widget.h"
#include<QPixmap>
#include<QBitmap>
#include<QPainter>
ShapeWidget::ShapeWidget(QWidget *parent)
:QWidget(parent, Qt::FramelessWindowHint)
{
QPixmap pix;
pix.load("../image/james.png", 0, Qt::AvoidDither|Qt::ThresholdDither|Qt::ThresholdAlphaDither);
pix=pix.scaled(300, 350);
resize(pix.size());
setMask(pix.mask());
this->setMouseTracking(true);
}
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->button()&Qt::LeftButton)
{
move(event->globalPos()-dragPosition);
event->accept();
}
}
void ShapeWidget::paintEvent(QPaintEvent *)
{
QPixmap pix;
pix.load("../image/james.png");
pix=pix.scaled(300, 350);
QPainter painter(this);
painter.drawPixmap(0, 0, pix);
}
结果
显示如下:

上面重载的移动事件不起作用,各位高手有没啥建议?