1. 程式人生 > >轉:QT實現陰影視窗(二)

轉:QT實現陰影視窗(二)

從上一篇的效果可以看到視窗並不美觀,而且不能用滑鼠進行拖動,還不可以實現最大最小化。

      要實現用滑鼠拖動可以,過載滑鼠點選和滑鼠移動事件的處理,具體如下:

     //GraphicDialog.h

     protected:

          void mousePressEvent(QMouseEvent *)
          void mouseMoveEvent(QMouseEvent* );

     private:

          QPoint  last;//儲存滑鼠按下的位置


     //GraphicDialog.cpp

     void GraphicDialog::mousePressEvent(QMouseEvent *e) 
     { 
          last = e->globalPos(); 
     }

     void GraphicDialog::mouseMoveEvent(QMouseEvent *e) 
     { 
          if(e->buttons()== Qt::LeftButton) 
          { 
               QPoint newpos = e->globalPos(); 
               QPoint upleft = mapToParent(newpos - last); //計算距原位置的偏移
               move(upleft); 
               last = newpos; //更新原位置到最新的位置
          } 
     } 
     這時已經可以用滑鼠手動視窗到任意位置。