QT:使用样式表作为外部文件
QT: Use stylesheet as external file
我有一个用 QT 5.9.5 开发的项目,所以是 C++。我有一个 GUI,我想用外部全局样式表描述小部件的外观。
我正在使用 QTCreator。我添加了一个名为“stylesheet.qss”的通用文件,QTCreator 将其放入“其他文件”目录。我还没有创建资源文件。只有“其他文件”目录中的 qss 文件。
为了调用文件,我在mainwindow.cpp(主窗口是用户界面,mainwindow.ui)中写了下面的代码:
QFile file(":/stylesheet.qss");
file.open(QIODevice::ReadWrite);
QTextStream in(&file);
QString text;
text = in.readAll();
file.close();
setStylesheet(text);
当我 运行 应用程序时,应用程序输出给我以下问题:
QIODevice::read (QFile, ":/stylesheets.qss"): device not open
相反,如果我写:
QFile file("stylesheet.qss");
如果我写:
file.open(QIODevice::ReadOnly);
没有出现该问题。但是,在所有情况下,变量文本都是空的,我无法使用样式表。
检查 file.errorString(),它给出:
"Unknown error"
并检查 file.error(),它给出:
0
有人可以建议我一个解决方案或其他方法来向我的应用程序添加样式表吗?
谢谢,
马可
在资源 (.qrc) 中添加您的 .qss
文件
将要添加到 qss
的代码放入 main.cpp
中的程序中:
#include "mainwindow.h"
#include <QApplication>
#include <QFile>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
/**
* Load the application style
*/
QFile styleFile(":/Style.qss");
styleFile.open(QFile::ReadOnly);
/**
* Apply the loaded stylesheet
*/
QString style(styleFile.readAll());
a.setStyleSheet(style);
MainWindow w;
w.show();
return a.exec();
}
我有一个用 QT 5.9.5 开发的项目,所以是 C++。我有一个 GUI,我想用外部全局样式表描述小部件的外观。 我正在使用 QTCreator。我添加了一个名为“stylesheet.qss”的通用文件,QTCreator 将其放入“其他文件”目录。我还没有创建资源文件。只有“其他文件”目录中的 qss 文件。 为了调用文件,我在mainwindow.cpp(主窗口是用户界面,mainwindow.ui)中写了下面的代码:
QFile file(":/stylesheet.qss");
file.open(QIODevice::ReadWrite);
QTextStream in(&file);
QString text;
text = in.readAll();
file.close();
setStylesheet(text);
当我 运行 应用程序时,应用程序输出给我以下问题:
QIODevice::read (QFile, ":/stylesheets.qss"): device not open
相反,如果我写:
QFile file("stylesheet.qss");
如果我写:
file.open(QIODevice::ReadOnly);
没有出现该问题。但是,在所有情况下,变量文本都是空的,我无法使用样式表。 检查 file.errorString(),它给出:
"Unknown error"
并检查 file.error(),它给出:
0
有人可以建议我一个解决方案或其他方法来向我的应用程序添加样式表吗? 谢谢, 马可
在资源 (.qrc) 中添加您的
.qss
文件将要添加到
qss
的代码放入main.cpp
中的程序中:
#include "mainwindow.h"
#include <QApplication>
#include <QFile>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
/**
* Load the application style
*/
QFile styleFile(":/Style.qss");
styleFile.open(QFile::ReadOnly);
/**
* Apply the loaded stylesheet
*/
QString style(styleFile.readAll());
a.setStyleSheet(style);
MainWindow w;
w.show();
return a.exec();
}