Qt之統一的UI介面格式基調,漂亮的UI介面

2021-07-06 07:51:58 字數 2151 閱讀 1608

最近一直在忙,忙工作,忙私活;也很久沒有寫部落格了;

今天主要談談qt ui介面統一樣式(格式基調)的問題;例如在window系統上,幾乎所有的視窗都有標題欄和狀態列以及**部件,而且每乙個標題欄和狀態列以及**部件樣式都保持一致的;但是在實際開發中我們又不想使用window系統自帶的標題欄和狀態列等,因此需要自定義標題欄和狀態列以及**部件,同時保持專案中的所有視窗的標題欄和狀態列和**部件的格式樣式一致,這樣在專案開發中,既可以保持擁有漂亮的ui介面,又能大大的提高開發效率,因為你不需要在每乙個視窗中對標題欄和狀態列以及**部件進行重複開發了,例如不需要對每乙個視窗進行滑鼠移動判斷從而對視窗進行移動,使使用者更加專注於業務;下面談談具體怎樣實現:

一、將標題欄和狀態列以及**部件整合於乙個類中

單獨作為乙個類,提供標題欄和狀態列以及**部件指標成員;

class qbasewidget : public

qframe

**如上所示,當然qtitlebar和qstatubar都是自定義的類,需要自己處理,如增加最小化按鈕,最大化按鈕按鈕,關閉按鈕,滑鼠位置判斷以及視窗多動,這樣你可以做成你自己想要的任何標題欄和狀態列以及**部件,m_pcontentwidget成員變數只是保持乙個指標而已,以後如果你要把你做的內容視窗嵌入到該類中,只是賦值即可,m_pmainlayout就是類的主布局了;寫到這裡,大家覺得是不是有點像qmainwindow類的處理過程了;

二、為標題欄和狀態列提供修改介面

在有些視窗中,可能不需要狀態列,例如程式的關於對話方塊,因此這時就應該提供外部介面供呼叫者使用,表示標題欄和狀態按是否需要;

qbasewidget(bool bshowtitlebar,qwidget *pcontentwidget,bool bshowstatubar,qwidget *parent = 0);
三、為標題欄按鈕提供修改介面並不是所有的視窗都有最大化和最小化以及關閉按鈕,例如對話方塊視窗,就只有關閉按鈕了,那麼最小化以及最大化按鈕當然就不要了;所以需要提供外部介面給呼叫者使用:

void setwidgetbtnshow(bool bminbtnshow,bool bmaxbtnshow,bool bclosebtnshow);
引數的含義依次表示是否顯示最小化按鈕,是否顯示最大化按鈕,是否顯示關閉按鈕.

四、將自己的內容部件嵌入到qbasewidget中

上述只是講解了怎麼修改自己的外觀;當然,最主要的還是要把自己的內容部件潛入到其中,例如你在qt designer中設計了乙個視窗,你想把這個視窗套在其中,則:

qbasewidget(bool bshowtitlebar,qwidget *pcontentwidget,bool bshowstatubar,qwidget *parent = 0);
只要將自己設計的內容部件的指標賦值給pcontentwidget即可,這樣就自然套上了統一的標題欄和狀態列以及**部件樣式.

五、統一外觀設定

在整個專案中,當然希望所有的視窗介面的色彩格調保持一致了,這時只要美化上述中所述的標題欄,狀態列以及**部件即可,而且只要寫一處**即可哦.

六、程式示例

最後,給大家截圖看看實現效果,統一格式的標題欄,狀態列以及**部件的格式;由於工程是用於實際專案中,所以這裡只擷取了使用者登入對話方塊以及關於對話方塊介面,其他介面不提供,謝謝

七、介面設計

使用者只需要設計**部件即可,其他的就不要了,如上圖中的使用者登入對話方塊,使用者只需要在qt designer中設計使用者登入對話方塊即可,然後嵌入其中即可,如下圖所示:

八、優勢

1、統一的樣式格調

2、漂亮的ui介面

3、大大節省開發時間

關於Qt的UI的一點理解

許久不用qt,突然對qt的ui程式設計模式有些不解,概念上有些混亂,一番查詢之後,基本又搞明白了,記錄一下。使用qt designer可以視覺化布局你的窗體和元件,這個布局檔案可以直接生成乙個ui類,供控制項使用。但是在 中,見到一句ui.setupui this 讓我疑惑了,究竟最終彈出的視窗是這...

Qt繫結UI介面和Qt類的四種方法

qt類標頭檔案中 宣告命名空間 namespace ui宣告ui指標物件 public explicit widget qwidget parent 0 private ui widget ui 原始檔的建構函式初始化列表中初始化指標 widget widget qwidget parent qwi...

Qt繫結UI介面和Qt類的四種方法

1 qt類標頭檔案中 宣告命名空間 namespace ui宣告ui指標物件 public explicit widget qwidget parent 0 private ui widget ui 原始檔的建構函式初始化列表中初始化指標 widget widget qwidget parent q...