我正在制作一个C ++应用程序,并且我创建了一个将从css文件应用样式表的函数。这是方法:
void MainWindow::load_css_file() {
QFile styleFile(":/light_style_css");
styleFile.open(QFile::ReadOnly);
QString styleSheet = styleFile.readAll();
setStyleSheet(styleSheet);
};
这很好用,除了每次我对“light_style_css”(这是我项目资源文件中的css文件的别名)进行更改时我需要运行“make”的事实。
但是,当我将方法改为这样的时候:
void MainWindow::load_css_file() {
QFile styleFile("../stylesheets/light_style.css");
styleFile.open(QFile::ReadOnly);
QString styleSheet = styleFile.readAll();
setStyleSheet(styleSheet);
};
我可以对文件进行更改,程序会更新而无需运行“make”来进行更改。
有没有办法,我可以使用资源系统,而不必运行“make”来进行更改?
这是我的资源档案:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file alias="light_style_css">stylesheets/light_style.css</file>
</qresource>
</RCC>
答案 0 :(得分:3)
简单地说:不,你不能。
资源内置于您的可执行文件中。如果要更改它们,则需要重建可执行文件。
您的第二个方法是从磁盘读取文件,因此它没有这种行为。
如果这对您来说是一个真正的问题,可以在命令行中将样式表作为参数传递,并默认为资源。这样,您可以根据需要调试样式表,而无需每次都重新编译。一旦满意就重建(在你发货之前!)。
答案 1 :(得分:2)
我们在项目中执行以下解决方案(由于公司政策,我无法提供代码):
第三,仅在调试版本中:
resource
文件夹中的main.qss
文件。:/
替换为./resource/
字符串,然后应用