新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Qt 簡單的風格統一與換膚

        Qt 簡單的風格統一與換膚

        作者: 時間:2016-09-12 來源:網絡 收藏

        QT既然作為一個成功的跨平臺GUI庫,當然會想到界面風格統一,本地化與換膚都做了考慮,網上有多種換膚的方法,自己也習慣于用簡單的方法,總結了一下自己心得,與大家分享

        本文引用地址:http://www.104case.com/article/201609/303387.htm

        一,改變與裝飾界面:

        通常使用設置Widget的背景,邊界,子對象的圖片,顏色來進行裝飾QWidget,

        1,改變被景圖片:

        較常用辦法是 QWidget.setAutoFillBackground(true); QPalette palette= QWidget.Palette(); QPixmap pic(xxx.png); palette.setBrush(QPalette::Window, new Brush(pic));palette.setBrush(QPalette::Base, new Brush(pic));palette.setBrush(QPalette::Button, new Brush(pic)); QWidget.setPalette(palette);

        但不同的控件還是要區別對待,比如對待QPushButton簡單用此方法就不行,還要設置為QPushButton.setFlat(true),也可以用QPushButton的setImage方法,還有對待 QTabWidget不僅要改變背景圖片,還要改變Tab的圖片,Tab還要區別改變被選中的Tab與沒被選中的Tab圖片,QTreeWidget,QTreeView中還要針對樹裝結節的圖片,還有標題欄等,都要用不同的方法來設置,QT有一種更方便的解決方案,就是設置StyleSheet

        被稱為QSS方法,類似網頁設計中的CSS, 語法也幾乎相同Idential,比如要設置QPushButton的背景圖,鼠標over,及按下的圖片切換,可以用如下方法:

        const char* normal = “bg.png;

        const char* pressed = pressed.png;

        const char* over = over.png;

        char str[512] = {0};

        sprintf(str,QPushButton{background-image:url(%s);border-style.:flat;} QPushButton:hover:pressed{background-image:url(%s);border-

        style.:flat;}QPushButton:hover:!pressed{background-image:url(%s);border-style.:flat;}, normal, pressed, over);

        w->setStyleSheet(QString(str));

        2,改變顏色:

        常用:QWidget->setBackgroundColor();來改變,當然也可以用Style. Sheet方法。

        二,全局統一風格:

        上面提到了QSS,QT還可以通過設置QApplication的StyleSheet來改變程序中所有控件的風格。比如:

        QApplication.setStyleSheet(QString(QPushButton{background-image:url(bg.png); border-style.:flat;})); 這樣的話,所有QPushButton的實例對象的背景圖片缺省情況下都是bg.png,當然,如果你重新設置某個QPushButton實例對象的 StyleSheet,那個實例對象的風格以當前設置的為準。

        這樣對界面的風格統一提供了一個簡單有效的解決方案。



        關鍵詞: Qt

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 大渡口区| 江城| 阳高县| 汶川县| 汪清县| 福海县| 瑞安市| 鞍山市| 万山特区| 新巴尔虎右旗| 朝阳市| 沂源县| 镇原县| 友谊县| 小金县| 都匀市| 长顺县| 禄丰县| 夹江县| 河北省| 天水市| 青海省| 通河县| 河间市| 铜川市| 莱阳市| 沽源县| 曲水县| 郯城县| 杨浦区| 荔波县| 临沭县| 尉犁县| 郎溪县| 旬阳县| 东光县| 九江县| 瑞昌市| 汉寿县| 平利县| 措美县|