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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM