Qt 中 實現窗體拖動

2021-06-21 03:25:48 字數 849 閱讀 7478

實現窗體拖動

如果我們不使用作業系統自帶的標題欄,首先就應該將windows標題欄去掉,這個功能只要一條語句就能夠實現,那就是在建構函式中加入

setwindowsflags(qt::framelesshint),但是窗體就固定不動了,既不能拖動也不能拉伸,下面我就介紹一種方法來實現窗體的拖動。

1. 在類宣告中新增兩個私有變數:

qpoint mousepoint;      //滑鼠相對於窗體的位置

bool ismousepressed;    //滑鼠是否按下

2. 在類宣告中新增滑鼠移動事件

protected:

virtual void mousepressevent(qmouseevent *event);  //滑鼠按下事件

virtual void mousemoveevent(qmouseevent *event);   //窗體拖動事件

virtual void mousereleaseevent(qmouseevent *event);//滑鼠釋放事件

3. 定義滑鼠操作事件

//滑鼠按下事件

void mywidget::mousepressevent(qmouseevent *event)

//窗體拖動事件

void mywidget::mousemoveevent(qmouseevent *event)

event->accept();

}//滑鼠釋放事件

void mywidget::mousereleaseevent(qmouseevent *event)

*注:必須在標頭檔案加入#include

Qt拖動滑鼠移動窗體中的內容

在qt的窗體中,當顯示的內容比窗體大時,一般會自動出現水平和垂直的滾動條,拖動滾動條就可以使窗體中的內容移動了。但是有時候按照需求當窗體內容比窗體大時,不可以顯示滾動條,要用滑鼠拖動窗體來移動窗體中的內容。首先關閉水平和垂直方向上的滾動條 sethorizontalscrollbarpolicy q...

Qt 圓角控制項,圓角窗體,滑鼠拖動窗體

1.設定圓角控制項 connectpb setstylesheet border 2px groove gray border radius 10px padding 2px 4px 設定圓角按鍵 2.設定圓角窗體 setwindowflags qt framelesswindowhint qbit...

呼叫API 實現 窗體 拖動

自定義 做乙個窗體 實現 滑鼠拖動 view code private const int wm syscommand 0x112 private system.windows.interop.hwndsource hwndsource public static intptr wndproc in...