步骤1:定义
public:
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void paintEvent(QPaintEvent *event);
QPoint DragPosition;
步骤2:构造函数中实现
QPixmap pix;
//加载图片
pix.load("11.png",0,Qt::AvoidDither|Qt::ThresholdDither| Qt::ThresholdAlphaDither);
resize(pix.size());//重设主窗体的尺寸为所读取的图片大小
setMask(QBitmap(pix.mask()));//遮住所选区域以外的部分
步骤3:使窗口可以拖动
void MainWindow::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)//判断按下的是否为鼠标左键
{
//DragPosition保存所在位置相对于左上角的偏移值
DragPosition = event->globalPos()-frameGeometry().topLeft();
event->accept();
}
if(event->button() == Qt::RightButton)//判断按下的是否为鼠标右键
{
close();
}
}
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons() == Qt::LeftButton)//event->buttons()返回的是鼠标的状态
{
move(event->globalPos()-DragPosition);//移动到鼠标当前点
event->accept();
}
}
步骤4:使窗口显示为所读取的图片
void MainWindow::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawPixmap(0,0,QPixmap(“11.png”));
}

这篇博客详细介绍了如何利用Qt库实现一个窗口,该窗口可以加载图片并允许用户通过鼠标左键拖动来移动窗口。首先定义了mousePressEvent、mouseMoveEvent和paintEvent等关键函数,然后在构造函数中加载图片并设置窗口大小和遮罩。通过监听鼠标事件,实现了窗口的拖动效果,同时支持鼠标右键关闭窗口。
1506

被折叠的 条评论
为什么被折叠?



