日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Qt之統(tǒng)一的UI界面格式基調(diào),漂亮的UI界面

 tianht 2015-05-15

最近一直在忙,忙工作,忙私活;也很久沒有寫博客了;
  今天主要談?wù)凲t UI界面統(tǒng)一樣式(格式基調(diào))的問題;例如在window系統(tǒng)上,幾乎所有的窗口都有標(biāo)題欄和狀態(tài)欄以及中央部件,而且每一個(gè)標(biāo)題欄和狀態(tài)欄以及中央部件樣式都保持一致的;但是在實(shí)際開發(fā)中我們又不想使用window系統(tǒng)自帶的標(biāo)題欄和狀態(tài)欄等,因此需要自定義標(biāo)題欄和狀態(tài)欄以及中央部件,同時(shí)保持項(xiàng)目中的所有窗口的標(biāo)題欄和狀態(tài)欄和中央部件的格式樣式一致,這樣在項(xiàng)目開發(fā)中,既可以保持擁有漂亮的UI界面,又能大大的提高開發(fā)效率,因?yàn)槟悴恍枰诿恳粋€(gè)窗口中對(duì)標(biāo)題欄和狀態(tài)欄以及中央部件進(jìn)行重復(fù)開發(fā)了,例如不需要對(duì)每一個(gè)窗口進(jìn)行鼠標(biāo)移動(dòng)判斷從而對(duì)窗口進(jìn)行移動(dòng),使用戶更加專注于業(yè)務(wù);下面談?wù)劸唧w怎樣實(shí)現(xiàn):

一、將標(biāo)題欄和狀態(tài)欄以及中央部件集成于一個(gè)類中

  單獨(dú)作為一個(gè)類,提供標(biāo)題欄和狀態(tài)欄以及中央部件指針成員;

復(fù)制代碼
class QBaseWidget : public QFrame
{
QVBoxLayout *m_pMainLayout;     //主布局
QTitleBar *m_pTitleBar;         //標(biāo)題欄
QWidget *m_pContentWidget;      //內(nèi)容區(qū)域,中央部件
QStatuBar *m_pStatuBar;         //狀態(tài)欄
}
復(fù)制代碼

  代碼如上所示,當(dāng)然QTitleBar和QStatuBar都是自定義的類,需要自己處理,如增加最小化按鈕,最大化按鈕按鈕,關(guān)閉按鈕,鼠標(biāo)位置判斷以及窗口多動(dòng),這樣你可以做成你自己想要的任何標(biāo)題欄和狀態(tài)欄以及中央部件,m_pContentWidget成員變量只是保持一個(gè)指針而已,以后如果你要把你做的內(nèi)容窗口嵌入到該類中,只是賦值即可,m_pMainLayout就是類的主布局了;寫到這里,大家覺得是不是有點(diǎn)像QMainWindow類的處理過程了;

二、為標(biāo)題欄和狀態(tài)欄提供修改接口

  在有些窗口中,可能不需要狀態(tài)欄,例如程序的關(guān)于對(duì)話框,因此這時(shí)就應(yīng)該提供外部接口供調(diào)用者使用,表示標(biāo)題欄和狀態(tài)按是否需要;

QBaseWidget(bool bShowTitleBar,QWidget *pContentWidget,bool bShowStatuBar,QWidget *parent = 0);

三、為標(biāo)題欄按鈕提供修改接口

  并不是所有的窗口都有最大化和最小化以及關(guān)閉按鈕,例如對(duì)話框窗口,就只有關(guān)閉按鈕了,那么最小化以及最大化按鈕當(dāng)然就不要了;所以需要提供外部接口給調(diào)用者使用:

void setWidgetBtnShow(bool bMinBtnShow,bool bMaxBtnShow,bool bCloseBtnShow);

  參數(shù)的含義依次表示是否顯示最小化按鈕,是否顯示最大化按鈕,是否顯示關(guān)閉按鈕.

四、將自己的內(nèi)容部件嵌入到QBaseWidget中

  上述只是講解了怎么修改自己的外觀;當(dāng)然,最主要的還是要把自己的內(nèi)容部件潛入到其中,例如你在Qt Designer中設(shè)計(jì)了一個(gè)窗口,你想把這個(gè)窗口套在其中,則:

QBaseWidget(bool bShowTitleBar,QWidget *pContentWidget,bool bShowStatuBar,QWidget *parent = 0);

  只要將自己設(shè)計(jì)的內(nèi)容部件的指針賦值給pContentWidget即可,這樣就自然套上了統(tǒng)一的標(biāo)題欄和狀態(tài)欄以及中央部件樣式.

五、統(tǒng)一外觀設(shè)置

  在整個(gè)項(xiàng)目中,當(dāng)然希望所有的窗口界面的色彩格調(diào)保持一致了,這時(shí)只要美化上述中所述的標(biāo)題欄,狀態(tài)欄以及中央部件即可,而且只要寫一處代碼即可哦.

六、程序示例

  最后,給大家截圖看看實(shí)現(xiàn)效果,統(tǒng)一格式的標(biāo)題欄,狀態(tài)欄以及中央部件的格式;由于工程是用于實(shí)際項(xiàng)目中,所以這里只截取了用戶登錄對(duì)話框以及關(guān)于對(duì)話框界面,其他界面不提供,謝謝

七、界面設(shè)計(jì)

  用戶只需要設(shè)計(jì)中央部件即可,其他的就不要了,如上圖中的用戶登錄對(duì)話框,用戶只需要在Qt Designer中設(shè)計(jì)用戶登錄對(duì)話框即可,然后嵌入其中即可,如下圖所示:

八、優(yōu)勢(shì)

1、統(tǒng)一的樣式格調(diào)
2、漂亮的UI界面
3、大大節(jié)省開發(fā)時(shí)間

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多