日常開發中,因為需要自定義標題欄來實現更好的效果,所以經常需要隱藏視窗自帶的標題欄。
在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 第乙個函式的第乙個列舉數是表示置頂顯示視窗,第二個是無邊框顯...