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(),則只能看到繪制出的框架,看不到圖片顏色,也就是看不到圖片。
*/
}
