基於QT的換膚整體解決方案(QSkinStyle)
對QT這個成功的跨平台GUI庫,本身內置了對換膚功能的實現,比如cleanlooks、plastique等跨平台風格;還有一些是和平台相關的風格,比如WindowsXP、WindowsVista風格只能用在windows平台上,底層也會調用uxtheme.dll來實現windows的風格。
QT內置的風格(qwindowsstyle、qmotifstyle、qcdestyle等),都是針對不同的風格定義(metric、look and fell等),通過畫點、畫線方式來實現的,這樣可以確保在不同的平台上,外觀都是一致的。可以預見的是,這樣的方法繁雜瑣碎,需要耐心和勇氣。
比較好的方式是QStyleSheetStyle,它采用了類似CSS的方式來定義widget的外觀和widget在運行時對狀態的反映,簡單而且高效。對於windows平台,它依然無法對宿主窗口(標題條和邊框)進行換膚,除非進行特殊的處理。
QSkinStyle是通過皮膚文件來實現QT換膚的,皮膚文件定義了widget的外觀和widget在運行時對狀態的反映,在不同的平台上,外觀都是一致的。還有一些特殊功能:比如宿主窗口換膚,狀態間切換時的動態效果,支持svg格式的皮膚圖片等。
以下是QSkinStyle在windows和Linux上運行的換膚截圖。
linux widget:

windows widget:

linux mdi:

windows mdi:

http://blog.csdn.net/slientman/article/details/5618950
http://www.qtcn.org/bbs/read.php?tid=62105
---------------------------------------------------------------------------------------------------------------------
開源版本:
http://www.cnblogs.com/feiyangqingyun/p/3915657.html
