基本思路:建立乙個widget,加入qlabel控制項和qpushbtton控制項即可。
1.建立自定義標題框類titlewidget類,在ui設計師介面拖拽出以下圖形
2.實現視窗關閉
connect(ui.btnclose,signal(clicked()),this,slot(windowclose()));
void classname::windowclose()
3.設定相關樣式,尤其是四周圓角
setstylesheet("border-radius:8px;");
4.自定義標題框完成後就開始使用了,在別的視窗中建立乙個widget然後提公升。
5.設定介面無邊框setwindowflags(qt::framelesswindowhint);
6.設定窗體透明,方便將實際內容顯示出來,否則窗體還是矩形,四角為空白。setattribute(qt::wa_translucentbackground);
注意:1.此時窗體內部絕對會有透明的區域,和控制項的白色很不搭。因此這時需要設定整個窗體樣式即背景色為白色:setstylesheet("background-color:white");2.如果在設計中需要設定按鈕覆蓋色即hover,那麼千萬不要圖快在ui介面設計師中設計整個窗體為白色,否則在**中寫hover的時候覆蓋色將會無效。筆者在寫時為了圖快,結果半天都沒發現問題所在。
7.設計窗體滑鼠事件。
// 滑鼠相對於窗體的位置 event->globalpos() - this->pos()
void widget::mousepressevent(qmouseevent *event)}
// 若滑鼠左鍵被按下,移動窗體位置
void widget::mousemoveevent(qmouseevent *event)
// 設定滑鼠未被按下
void widget::mousereleaseevent(qmouseevent *event)
Qt 無邊框視窗自定義標題欄
實現了自定義標題欄的最小化,最大化 自適應工作列 關閉,拉伸,拖曳。因為不想引入其他資源,所以按鈕,背景都是系統提供的。效果圖 直接上 用法 include widget.h int main int argc,char argv pragma once include class qtoolbut...
Qt自定義視窗事件
一 移動主介面 移動主介面是通過按住滑鼠左鍵進行標題欄拖動最終導致主介面移動 由於還有視窗伸縮功能,因此對於標題欄左部,頂部,右部應該騰出5畫素空間給視窗伸縮功能使用,即滑鼠移動到這5畫素空間之內的話,滑鼠形狀就會發生改變 暗示可以伸縮視窗 為什麼只有標題欄騰出5畫素空間,而其他部件 如工具欄 內容...
Qt 自定義搜尋框
1.建立輸入框 qlineedit text new qlineedit this text setgeometry 50,80,200,25 text setobjectname qstring text 2.建立按鈕 qsize size qsize 40,text height qpushbu...