Qt之自定義介面(新增自定義標題欄)

2022-04-29 19:15:07 字數 1883 閱讀 7327

通過上節內容,我們實現了自定義窗體的移動,但是我們缺少乙個標題欄來顯示窗體的圖示、標題,以及控制窗體最小化、最大化、關閉的按鈕。

自定義標題欄後,所有的控制項我們都可以定製,比如:在標題欄中新增換膚、設定按鈕以及其他控制項。

之前,我們將介面移動的事件寫在主介面裡面,這會有乙個問題,一般情況下,是介面隨著標題欄的移動而移動,而並非介面中的所有位置都可以進行拖動,所以我們將事件寫在標題欄中比較合理。

雙擊標題欄會進行窗體的最大化/還原,所以我們需要重寫此事件進行控制。

因為窗體大小發生變化的時候,最大化的圖示、提示應該對應的發生變化,所以在eventfilter中事件觸發時呼叫。

widget::widget(qwidget *

parent)

: qwidget(parent)

注意installeventfilter必須在setwindowtitle、setwindowicon之前呼叫,因為必須先安裝事件過濾器,相應事件觸發時,才會進入標題欄的eventfilter事件中。

Qt之自定義介面(新增自定義標題欄)

通過上節內容,我們實現了自定義窗體的移動,但是我們缺少乙個標題欄來顯示窗體的圖示 標題,以及控制窗體最小化 最大化 關閉的按鈕。自定義標題欄後,所有的控制項我們都可以定製,比如 在標題欄中新增換膚 設定按鈕以及其他控制項。之前,我們將介面移動的事件寫在主介面裡面,這會有乙個問題,一般情況下,是介面隨...

QT 自定義標題欄

1 去除舊的標題欄 去除qdialog對話方塊有上角問號 qt windowflags flags qt dialog flags qt windowclosebuttonhint flags qt framelesswindowhint setwindowflags flags flags qt ...

QT自定義標題欄

ifndef dlgtitle h define dlgtitle h include enum buttontype class dlgtitle public qwidget endif dlgtitle h自定義標題欄類dlgtitle.cpp如下 include dlgtitle.h def...