近期學習qt 。使用的編譯器是qt creator ,學習過程中遇到的題就是 怎樣將程序中將要用到的.qss 文件靜態編譯到.exe程序中,而不是在程序執行時動態加載。動態加載的最大問題在於一旦.qss 的文件名稱或者路徑改變 ,程序中所用到的.qss 文件也將失效,這種話程序無法公布,即使公布了,頁面效果也會大打折扣。。。
。
在網上找了非常多資料。但試過之后都沒用,以下是網上找到的一些資料:
方法一:1、建立文本文件,寫入樣式表內容。更改文件后綴名為qss;
2、在project中新建資源文件*.qrc,將qss文件增加資源文件qrc中。此處注意prefix最好為"/"。否則在調用qss文件時會找不到文件;
3、通過傳入路徑\文件名稱的方式創建一個QFile對象,以readonly的方式打開,然后readAll,最后qApp->setStyleSheet就能夠使qss生效。
QString qss;
QFile qssFile(":/qss/css.qss");
qssFile.open(QFile::ReadOnly);
if(qssFile.isOpen())
{
qss = QLatin1String(qssFile.readAll());
qApp->setStyleSheet(qss);
qssFile.close();
}
方法二:動態加載
1、建立文本文件,寫入樣式表內容。更改文件后綴名為qss。
2、在程序中新建QFile對象,指向新建的qss文件就可以
QString qss;
QFile qssFile("D:\\Test\\qss.qss");
qssFile.open(QFile::ReadOnly);
if(qssFile.isOpen())
{
qss = QLatin1String(qssFile.readAll());
qApp->setStyleSheet(qss);
qssFile.close();
}
第一種方法,依照網上的說法,假設成功的話應該是靜態編譯,已經將qss文件編譯到exe程序中,但我按第一種方法試過之后,不知什么原因沒實用;
另外一種方法。屬於動態編譯,程序執行的時候讀入。這樣的方法靈活性太低,一旦文件發生改變。exe的效果也會失效
我的方法:1、新建qt項目,包含ui界面的那種。
2、新建文本文檔,輸入樣式表(qss)的文本。
3、右鍵單擊項目的ui界面,選擇 “改變樣式表”。
4、在彈出的對話框中,直接粘貼qss文件的內容就可以
我的方法屬於靜態編譯。。
。。。
對於項目中不包含ui界面的。眼下還沒有試過。故不多說。。
。。