Qt實現 可移動的無邊框視窗

2021-10-06 00:09:12 字數 1117 閱讀 3785

日常開發中,因為需要自定義標題欄來實現更好的效果,所以經常需要隱藏視窗自帶的標題欄。

在qt中,通過setwindowflags(qt::framelesswindowhint)函式對當前視窗設定無邊框,但是這樣存在乙個問題,

就是視窗無法被滑鼠拖動了,所以這時候就需要重寫一下事件,來實現視窗的移動。

先看**實現:

#include "widget.h"

#include "ui_widget.h"

#include widget::widget(qwidget *parent)

: qwidget(parent)

, ui(new ui::widget)

widget::~widget()

void widget::mousemoveevent(qmouseevent *e)

void widget::mousepressevent(qmouseevent *e)

void widget::mousereleaseevent(qmouseevent *e)

void widget::on_btn_clos_clicked()

void widget::on_btn_max_clicked()

this->showmaximized();

}void widget::on_btn_min_clicked()

我們需要在標頭檔案中重寫以下3個滑鼠事件,

//滑鼠移動事件

void mousemoveevent(qmouseevent *event);

//滑鼠釋放事件

void mousereleaseevent(qmouseevent *event);

//滑鼠按下事件

void mousepressevent(qmouseevent *event);

通過滑鼠按下,進入mousepressevent函式,獲取到當前相對視窗的座標,

當滑鼠拖動時,在mousemoveevent會進行響應,然後通過呼叫move函式,來實現視窗的移動。

當拖動結束後,滑鼠釋放,不再按下,會進入mousereleaseevent,這時候將上次滑鼠按下的座標賦值置空。

form 無邊框 移動視窗

winform 最近想弄乙個桌面專案 用到了 製作無邊框的窗體 這裡記錄下 第一步 將 form1的 fromborderstyle 設定為none 第二步 拖乙個panl 放到 窗體的邊上 設定panel的mosedown 事件 可直接控制的控制項 region 視窗移動 定義無邊框窗體form ...

Qt之自定義介面(實現無邊框 可移動)

ui設計是指對軟體的人機互動 操作邏輯 介面美觀的整體設計。好的ui設計不僅是讓軟體變得有個性 有品位,還要讓軟體的操作變得舒適簡單 自由,充分體現軟體的定位和特點。愛美之心人皆有之。其實軟體介面就像工業造型一樣,是產品的重要賣點。乙個產品擁有美觀的介面會給人帶來舒適的視覺享受,拉近人與產品的距離,...

在Qt上實現無邊框效果,視窗的移動和關閉

先直接上 setwindowflags qt windowstaysontophint qt framelesswindowhint windowflags setattribute qt wa translucentbackground 第乙個函式的第乙個列舉數是表示置頂顯示視窗,第二個是無邊框顯...