首页 > 代码库 > Qt窗口添加鼠标移动拖拽事件
Qt窗口添加鼠标移动拖拽事件
1、 .h文件中添加
private:
QPoint dragPosition;
2、 在cpp文件中重写鼠标点击和拖拽函数
void ShapeWidget::mousePressEvent(QMouseEvent * event)
{
if (event->button() == Qt::LeftButton) //点击左边鼠标
{
dragPosition = event->globalPos() - frameGeometry().topLeft();
//globalPos()获取根窗口的相对路径,frameGeometry().topLeft()获取主窗口左上角的位置
event->accept(); //鼠标事件被系统接收
}
}
void ShapeWidget::mouseMoveEvent(QMouseEvent * event)
{
if (event->buttons() == Qt::LeftButton) //当满足鼠标左键被点击时。
{
move(event->globalPos() - dragPosition);//移动窗口
event->accept();
}
}
另外:背景绘制
void ShapeWidget::paintEvent(QPaintEvent *)
{
QPainter painter(this);//创建一个QPainter对象
painter.drawPixmap(0,0,QPixmap(":/images/Watermelon.png"));//绘制图片到窗口
/*
QPixmap(":/images/Watermelon.png")如果改为QPixmap(),则只能看到绘制出的框架,看不到图片颜色,也就是看不到图片。
*/
}
Qt窗口添加鼠标移动拖拽事件