c++ - 如何将 Qt 样式表移动到外部文件但将其编译到资源中?

标签 c++ qt qtstylesheets

我的 Qt 应用程序有一个大型样式表,其中包含大量边距、像素和其他直接基于绘图和图形并与其相关的内容。我很乐意将所有这些东西都交给设计师,但样式表保存在 .ui 文件中,这对设计师来说并不方便;她更愿意查看一个单独的文件并使用她常用的工具对其进行编辑。

我想要的是将样式表移动到外部 .qss 文件,将该文件添加到程序资源并将其链接到 .ui 文件,以便小部件自动编译和使用样式表,并且应用程序不会' 必须保留样式表文件并在运行时加载它。

如何实现?

最佳答案

将所有样式复制到一个文件中并将其重命名为 stylesheet.qss 然后将其作为新资源项包含在您的 qrc 文件中。您可以通过编辑您的 qrc 文件(如果您已有)来简单地完成此操作。 Refer documentation 关于如何添加新资源。

然后像这样修改您的代码以在运行时读取qss 文件的内容并将样式应用于您的应用程序。

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QFile file(":/stylesheet.qss");
    if(file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        a.setStyleSheet(file.readAll());
        file.close();
    }

    MainWindow w;
    w.show();

    return a.exec();
}

注意:当您在 stylesheet.qss 中进行更改时,您必须编译 qrc 文件才能使更改生效。

关于c++ - 如何将 Qt 样式表移动到外部文件但将其编译到资源中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15916135/

相关文章:

c++ - 以编程方式编辑 QSS 样式表

python - 为什么继承另一个类的类不会产生与 'another class' 相同的结果?

c++ - 如何删除Qtreewidget中的虚线分支

c++ - 不同类型的 * 值

c++ - 如何在不混淆字段的情况下声明复数?

c++ - 在 visual studio 2010 中编译 IDL 文件时无法生成必要的文件

c++ - 由于删除而崩溃(尝试处理异常...)

unit-testing - Qt 中是否可以对私有(private)方法进行单元测试(访问)?

c++ - 如果我有一个父类(super class)类型的集合,如何获取特定子类类型的所有项目?

c++ - Qt 样式表是做什么用的,它们是如何工作的?