【问题标题】:Qt - QFile not opening a .qss fileQt - QFile 没有打开 .qss 文件
【发布时间】:2014-10-24 00:26:27
【问题描述】:

我正在尝试为我的项目使用外部样式表,但我无法使用 QFile 类打开它。我已经将它导入到 .qrc 文件中,它的一部分看起来像这样:

  <qresource prefix="stylesheets">
    <file>Resources/Stylesheet.qss</file>
  </qresource>

这就是我打开和使用文件的方式:

QFile stylesheet(":/stylesheets/Resources/Stylesheet.qss");
if (stylesheet.open(QIODevice::ReadOnly | QIODevice::Text))
{
    newGameDialog.setStyleSheet(stylesheet.readAll());
    stylesheet.close();
}

这可能有什么问题?我正在使用带有最新 Qt 和 VS Qt 插件的 Visual Studio 2013。我还在“Qt 项目设置”中将项目设置为支持 QML。 .qss 文件看起来像这样(如果直接设置为 QString,它就可以工作)。我不确定是否需要“导入”行:

import Qt 5.3.1

QDialog
{
    background-color: 'white';
}

它读得很好,但风格不适用。这里是调试模式:

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    QDialog 不支持“background-color”,只支持“backgroud:”。

    (如果这不起作用,还有其他想法: 也许忘记为 newGameDialog 类指定 Q_OBJECT?

    或者使用 Qt Designer 创建一个 QDialog,将样式表源复制到样式表属性字段中,看看它是否有效,或者在测试实例化对话框时设计器是否显示错误或正确应用样式(Ctrl+R i想想)。)

    【讨论】:

    • Q_OBJECT 存在。我已经删除了“import”行,手动编译了 .qrc 文件,它现在可以工作了。什么时候使用“导入”行?
    • 到现在还没有看到import,你从哪里得到的?
    • 我猜是在网上搜索指导时偶然发现的。我有普通 CSS 的经验,但不是这个。
    • 我认为 qt 的样式表比较有限(并且还有一些特定于 qt 的表达式)。
    • 您可以通过将 styleSheet.readAll() 中的样式读入 QString 来以编程方式更改从 .qss 文件中读入的值。然后您必须进行模式匹配(可能是 QRegexp)来查找类或对象名称标识符并将字符串中的 qss 更改为您想要的。然后将 setStyleSheet 与新字符串一起使用。
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多