現在較多軟體使用扁平化的介面風格,設計的很漂亮,感覺也比較簡約。
這裡給出一種qt實現這種扁平化主視窗的示例,實現一些基本的標題欄拖放、最大最小關閉按鈕等處理。
外觀:mainwindow去掉選單欄、工具條、狀態列等,新增1個widget作為標題欄,它和內容區域使用垂直布局。
標題欄新增qlabel,作為應用程式圖示;和乙個標題文字,外加3個按鈕。水平布局。
拖動:就是滑鼠按下、移動、彈起三個訊息的處理。
雙擊標題欄最大化:給標題欄installeventfilter,處理雙擊訊息。
mainwindow.h:
#ifndef mainwindow_h
#define mainwindow_h
#include #include namespace ui
class mainwindow : public qmainwindow
;#endif // mainwindow_h
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include mainwindow::mainwindow(qwidget *parent) :
qmainwindow(parent),
ui(new ui::mainwindow)
"); //另外在設計器內檢視widgettitle樣式,內有標題欄各個子控制項的樣式設定
}mainwindow::~mainwindow()
bool mainwindow::eventfilter(qobject *obj, qevent *e)
}return qobject::eventfilter(obj, e);
}void mainwindow::mousepressevent(qmouseevent *e)//滑鼠按下事件
}void mainwindow::mousemoveevent(qmouseevent *e)//滑鼠移動事件
}void mainwindow::mousereleaseevent(qmouseevent *e)//滑鼠釋放事件
void mainwindow::on_btnmin_clicked()
void mainwindow::on_btnmax_clicked()
else
mismax = !mismax;
}void mainwindow::on_btnexit_clicked()
qt無邊框視窗1 簡單示例.rar: Qt無邊框視窗拖拽和陰影
只需要一行 即可實現 及執行效果 先要去qwidget裡面找到滑鼠事件函式 理一下座標的位置情況 左上角 螢幕的左上角 中間的視窗 程式的視窗 箭頭 滑鼠位置 座標位置滿足 x y z 在designer裡面拖乙個widget出來叫shadowwidget shadowwidget的顏色為灰色,我們...
Qt實現 可移動的無邊框視窗
日常開發中,因為需要自定義標題欄來實現更好的效果,所以經常需要隱藏視窗自帶的標題欄。在qt中,通過setwindowflags qt framelesswindowhint 函式對當前視窗設定無邊框,但是這樣存在乙個問題,就是視窗無法被滑鼠拖動了,所以這時候就需要重寫一下事件,來實現視窗的移動。先看...
form 無邊框 移動視窗
winform 最近想弄乙個桌面專案 用到了 製作無邊框的窗體 這裡記錄下 第一步 將 form1的 fromborderstyle 設定為none 第二步 拖乙個panl 放到 窗體的邊上 設定panel的mosedown 事件 可直接控制的控制項 region 視窗移動 定義無邊框窗體form ...