6月8日14:55
经过查阅资料和测试,发现以前的认识是错误的,更正一下,以免误导他人。最后感叹一句刘大神的qt宝典内容丰富呀。
加载qss文件,qApp可以加载qss文件的内容,也可以加载文件名。
- (1)如果加载文件内容,则qss文件中引用图片资源的相对路径起始路径是从程序执行文件的目录开始的。
- (2)如果加载文件名,则qss文件中引用的图片的相对路径可以是相对于qss文件的目录设置。
- 如果相对路径是相对于qss文件所在目录,而采用(1)种方案,则setStylesheet函数是相对于应用程序的目录来寻找的,因此,在加载的时候出现如下错误:
此时,通过修改程序当前目录的方式,以达到保持qss文件和图片文件的独立性的效果,计划通过修改当前工作目录的方式来实现,代码如下:
//记录当前路径
QString appDir = QCoreApplication::applicationDirPath();
QString tempPath = appDir + "/config/themes/";
qDebug() << "old:" << QDir::currentPath();
bool jg = QDir::setCurrent(tempPath);
qDebug() << "路径设置为:" << QDir::currentPath() << "结果:" << jg;
qApp->setStyleSheet(qss);
QDir::setCurrent(appDir);
但是,通过试验,发现该函数还是以应用程序目录为起点进行搜索的,所以失败。
最终解决方法:
当加载文件名时,在加入字符串前加'file:///'字符串即可。此时可以按照第二种方式加载qss文件效果。
之前忘记加file:///了,所以失败,而这个在刘典武的qt宝典里面明确写了。