4
我正在使用QTCreator並創建了一個QWidget,然後我隱藏了標題欄setWindowFlags(Qt::CustomizeWindowHint);
。在屏幕上選擇並移動Qwidget
但我無法選擇或移動我的小部件。我如何使用mouseEvent來解決這個問題?
我正在使用QTCreator並創建了一個QWidget,然後我隱藏了標題欄setWindowFlags(Qt::CustomizeWindowHint);
。在屏幕上選擇並移動Qwidget
但我無法選擇或移動我的小部件。我如何使用mouseEvent來解決這個問題?
如果你希望能夠到你的屏幕上,只需點擊並拖動四處移動你的窗口(同時保持按下鼠標按鈕),這裏有一個簡單的方法來做到這一點:
#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僅在按下按鈕時生成)。
謝謝!它正在工作 –