Qt製作Skin(面板)總結

2021-04-13 08:14:53 字數 1916 閱讀 4963

使用skin(**)是製作酷酷介面的乙個有利的工具,在使用者介面gui越來越重要的今天,乙個應用程式如果只有一套**,不能更換**,那麼這個應用程 序的生命力是非常值得人們懷疑的;那麼使用qt如何製作酷酷而又吸引人的介面呢?下面我會對在qt下進行**製作,異型視窗製作做乙個總結,對於新手是一 個入門,對於老手算是乙個參考吧,如果有不妥和不當之處,還請大家不吝指出。

製作漂亮的介面目前至少有兩個關鍵因素,乙個是視窗需要提供異型顯示,另外乙個就是提供換膚功能。前者是彰顯當前年輕人個性的乙個很好的方式,因而也是深受當今年輕人的熱愛;後者則是在前者的基礎之上給了年輕人對於自己喜好的軟體樣式的更廣泛的選擇。

1、定義:

異型視窗主要對應的是作業系統預設的視窗樣式。它是相對於預設作業系統中規規矩矩的長方形視窗而產生的一種可以採用任何形狀顯示的gui介面視窗。

2、簡介:

任何一種作業系統,無論是mac,linux,還是windows,在其gui系統中都會提供一種預設的視窗樣式。一般情況下這種樣式都是比較規矩的長方 形,或者圓角長方形;這種顯示樣式是由作業系統提供的,如果你採用其上的ide進行gui介面開發,預設的介面樣式仍然是系統預設的;然而,幸運的是,大 部分的成熟的gui開發系統都會提供異型視窗開發的解決方案。

3、實現說明:

第一步、視窗類需要從qwidget繼承,象這樣:

class lexample:public qwidget; /* class lexample */

注意:必須是公有繼承,否則你這個視窗很多功能都實現不了。

第二步、視窗初始化時需要更改視窗為自定義模式和沒有邊界模式, like this:

lexample::lexample:

qwidget(pv_event, null, wstyle_customize | wstyle_noborder)

注意:這兩者不可缺一,否則會出現其他效果,並不是完全的異型介面了,讀者可自行嘗試;

第三步、如果整個程式主介面是異型,那麼在主視窗初始化的時候增加下面這句話:

setbackgroundmode(qwidget::nobackground);
注意:這一條語句並不是必要的,去掉也並不影響最終結果;

第四步、製作主介面異型和檬板;

有些人一看到檬板倆字就像到了複雜的影象處理,已經有了要閃人的意思了,其實檬板的原理或許有點複雜,但是這裡的做法卻非常簡單,我們只需要完成兩副即可;

這個檬板是乙個黑白單色,也就是說這個只有黑白兩色。檬板處理時,黑色是你要顯示的主介面的部分,而白色則是要透明的部分。這樣你就可以通過 這個檬板任意的控制你要顯示的介面的形狀了。另外,這個還有乙個要求,就是大小要和前面的主介面相同,這樣才能對整個主介面進行控制。

第五步、過載paintevent方法顯示異型形狀的介面;

void lexample::paintevent(qpaintevent *pv_event)

如此,經過這五大步驟,你就可以實現異型視窗的實現了。

這一步的實現比較簡單,具體的方法就是過載你用到的所有控制項的paintevent方法,自己控制控制項介面的顯示,全部採用配置檔案+的方法,你就可以實現換膚功能了。

小記:好一陣子沒有寫blog了,主要是最近自己所作的工作大部分不集中到程式設計方面了。這是乙個主要原因,還有就是最近加班比較頻繁,也確實很難有心思寫點東西。

今天剛好和公司的技術總結寫到一起了,一篇文章三個作用,這難道就是傳說中的一石三鳥?

Qt製作Skin(面板)總結

使用skin 是製作酷酷介面的一 個有利的工具,在使用者介面gui越來越重要的今天,乙個應用程式如果只有一套 不能更換 那麼這個應用程式的生命力是非常值得人們懷疑的 那麼使 用qt如何製作酷酷而又吸引人的介面呢?下面我會對在qt下進行 製作,異型視窗製作做乙個總結,對於新手是乙個入門,對於老手算是乙...

SKIN 使用總結 及 疑惑。

我試驗過了0.1.3和2.0,3.0版本的skin 1,skin 不同版本的用法不同,ssk檔案的格式也不同,所以不可以混用。2.x和3.x的應該相同,但是跟0.1.3的不同 2,在0.1.3版本的檔名 skinplusplus.h,skinplusplus.lib,skinplusplus.dll...

Skin 面板庫在VS2010中使用

由於最近專案開發中需要軟體介面比較美觀,所以查閱了一些資料,但總結所有的美化介面的方法,skin 是最成熟和最方便快捷的方法,所以總結使用方法如下 1,在stdafx.h中新增以下語句 include skinppwtl.h pragma comment lib,skinppwtl 2,將skinp...