本發(fā)明涉及軟件開(kāi)發(fā)領(lǐng)域,尤其涉及一種基于qt的svg圖標(biāo)顯示方法、設(shè)備及介質(zhì)。
背景技術(shù):
1、隨著硬件的發(fā)展,顯示器分辨率越來(lái)越高,在高分辨下或放大顯示png、jpg等格式的圖標(biāo)時(shí)會(huì)出現(xiàn)模糊,影響用戶體驗(yàn),而現(xiàn)有的使用qwidget的ui組件構(gòu)成的程序均無(wú)法在ui組件圖標(biāo)中支持svg矢量圖顯示。
技術(shù)實(shí)現(xiàn)思路
1、為了解決上述問(wèn)題,本發(fā)明提出了一種基于qt的svg圖標(biāo)顯示方法、設(shè)備及介質(zhì)。
2、具體方案如下:
3、一種基于qt的svg圖標(biāo)顯示方法,包括以下步驟:
4、針對(duì)待作為按鈕圖標(biāo)的svg矢量圖,結(jié)合qt的對(duì)象屬性系統(tǒng)和qss的自定義語(yǔ)法規(guī)則,新增svg矢量圖對(duì)應(yīng)于不同繪制狀態(tài)的屬性;當(dāng)svg矢量圖為多色時(shí),其屬性記錄不同繪制狀態(tài)對(duì)應(yīng)的矢量圖;當(dāng)svg矢量圖為單色時(shí),其屬性記錄輸入的svg矢量圖和不同繪制狀態(tài)對(duì)應(yīng)的顏色;
5、重載qt中的paintevent函數(shù),將paintevent函數(shù)中原生的繪制圖標(biāo)的內(nèi)容替換為繪制svg圖標(biāo)函數(shù);在繪制svg圖標(biāo)函數(shù)中首先獲取繪制狀態(tài),之后基于新增的不同繪制狀態(tài)下的屬性獲取該繪制狀態(tài)對(duì)應(yīng)的矢量圖,最后基于待繪制的svg圖標(biāo)的類(lèi)型,將原qss中對(duì)應(yīng)類(lèi)型的image屬性替換為該繪制狀態(tài)對(duì)應(yīng)的矢量圖;
6、當(dāng)需要繪制svg圖標(biāo)時(shí),調(diào)用重載后的paintevent函數(shù)進(jìn)行繪制。
7、進(jìn)一步的,當(dāng)svg矢量圖為單色時(shí),基于屬性獲取該繪制狀態(tài)對(duì)應(yīng)的矢量圖的方法為:基于屬性中該繪制狀態(tài)對(duì)應(yīng)的顏色,對(duì)svg矢量圖中fill屬性的值進(jìn)行替換,將替換后得到的矢量圖作為所需的矢量圖。
8、進(jìn)一步的,繪制狀態(tài)包括常規(guī)態(tài)、懸浮態(tài)、按下態(tài)、勾選態(tài)和失能態(tài)。
9、進(jìn)一步的,待繪制的svg圖標(biāo)的類(lèi)型包括背景類(lèi)型和邊框類(lèi)型。
10、進(jìn)一步的,在繪制svg圖標(biāo)函數(shù)中能夠新增自定義的svg圖標(biāo)類(lèi)型,當(dāng)自定義的svg圖標(biāo)類(lèi)型中包含文本時(shí),預(yù)先新增該文本對(duì)應(yīng)于不同繪制狀態(tài)的屬性,用于記錄不同繪制狀態(tài)對(duì)應(yīng)的文本圖片。
11、一種基于qt的svg圖標(biāo)顯示終端設(shè)備,包括處理器、存儲(chǔ)器以及存儲(chǔ)在所述存儲(chǔ)器中并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)本發(fā)明實(shí)施例上述的方法的步驟。
12、一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)本發(fā)明實(shí)施例上述的方法的步驟。
13、本發(fā)明采用如上技術(shù)方案,通過(guò)實(shí)現(xiàn)對(duì)svg矢量圖的繪制和改變svg矢量圖的顏色,在qwidget的ui組件基礎(chǔ)上將底層圖標(biāo)的繪制用svg矢量圖代替?zhèn)鹘y(tǒng)png、jpg圖標(biāo),使ui組件能支持svg矢量圖圖標(biāo)的顯示,從而達(dá)到高分辨或放大顯示下ui組件的圖標(biāo)不會(huì)模糊,提高用戶體驗(yàn)。
1.一種基于qt的svg圖標(biāo)顯示方法,其特征在于,包括以下步驟:
2.根據(jù)權(quán)利要求1所述的基于qt的svg圖標(biāo)顯示方法,其特征在于:當(dāng)svg矢量圖為單色時(shí),基于屬性獲取該繪制狀態(tài)對(duì)應(yīng)的矢量圖的方法為:基于屬性中該繪制狀態(tài)對(duì)應(yīng)的顏色,對(duì)svg矢量圖中fill屬性的值進(jìn)行替換,將替換后得到的矢量圖作為所需的矢量圖。
3.根據(jù)權(quán)利要求1所述的基于qt的svg圖標(biāo)顯示方法,其特征在于:繪制狀態(tài)包括常規(guī)態(tài)、懸浮態(tài)、按下態(tài)、勾選態(tài)和失能態(tài)。
4.根據(jù)權(quán)利要求1所述的基于qt的svg圖標(biāo)顯示方法,其特征在于:待繪制的svg圖標(biāo)的類(lèi)型包括背景類(lèi)型和邊框類(lèi)型。
5.根據(jù)權(quán)利要求1所述的基于qt的svg圖標(biāo)顯示方法,其特征在于:在繪制svg圖標(biāo)函數(shù)中能夠新增自定義的svg圖標(biāo)類(lèi)型,當(dāng)自定義的svg圖標(biāo)類(lèi)型中包含文本時(shí),預(yù)先新增該文本對(duì)應(yīng)于不同繪制狀態(tài)的屬性,用于記錄不同繪制狀態(tài)對(duì)應(yīng)的文本圖片。
6.一種基于qt的svg圖標(biāo)顯示終端設(shè)備,其特征在于:包括處理器、存儲(chǔ)器以及存儲(chǔ)在所述存儲(chǔ)器中并在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)如權(quán)利要求1~5中任一所述方法的步驟。
7.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,其特征在于:所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1~5中任一所述方法的步驟。