2012-07-03 208 views
4

我正在使用QTCreator並創建了一個QWidget,然後我隱藏了標題欄setWindowFlags(Qt::CustomizeWindowHint);在屏幕上選擇並移動Qwidget

但我無法選擇或移動我的小部件。我如何使用mouseEvent來解決這個問題?

回答

17

如果你希望能夠到你的屏幕上,只需點擊並拖動四處移動你的窗口(同時保持按下鼠標按鈕),這裏有一個簡單的方法來做到這一點:

#include <QtGui> 

class W: public QWidget 
{ 
    Q_OBJECT 

    public: 
     explicit W(QWidget *parent=0) : QWidget(parent) { } 

    protected: 
     void mousePressEvent(QMouseEvent *evt) 
     { 
      oldPos = evt->globalPos(); 
     } 

     void mouseMoveEvent(QMouseEvent *evt) 
     { 
      const QPoint delta = evt->globalPos() - oldPos; 
      move(x()+delta.x(), y()+delta.y()); 
      oldPos = evt->globalPos(); 
     } 

    private: 
     QPoint oldPos; 
}; 

mousePressEvent,您保存鼠標所在位置的全局(屏幕座標)位置,然後在mouseMoveEvent中計算鼠標移動的距離,並以此量更新小部件的位置。

請注意,如果您啓用了鼠標跟蹤,則需要添加更多邏輯才能在實際按下鼠標按鈕時移動窗口。 (鼠標跟蹤被禁用,這是默認設置,mouseMoveEvent s僅在按下按鈕時生成)。

+0

謝謝!它正在工作 –