【问题标题】:Style from singleton not updated during build单例样式在构建期间未更新
【发布时间】:2017-04-27 19:41:14
【问题描述】:

我正在尝试通过我使用qmlRegisterSingletonType 注册的样式单例Style.qml 来设置我的应用程序的样式。当我对单例 qml 文件进行更改时,这些在重新构建应用程序时不会得到更新。

以下行为让我相信这是一个缓存问题:当我将新值添加到样式文件的顶部时,所有旧值都会相应地移动。例如查看下面给出的文件,如果我在字体大小中添加另一行,则此转换会导致任何值为 backgroundColorHighlight 的项目在应用程序内以backgroundColor 的颜色显示。所以颜色被替换为它曾经所在的行的值。

我在哪里可以找到导致这种奇怪行为的缓存文件(如果有问题的话)并手动清除它?

到目前为止我已采取的步骤:

  • 通过 Qt Creator 清理了项目
  • 通过删除构建文件夹手动清理项目
  • 已检查和.qmlc 文件
  • 在 .pro 文件中添加了QML_DISABLE_DISK_CACHE
  • 在重建之前运行qmake

现在我完全没有想法了。 Qt Creator / qmake 还有其他可以“隐藏”缓存文件的地方吗?

Style.qml:

pragma Singleton
import QtQuick 2.8

QtObject {
    //basic fonts
    property int fontSizeSmall: 8
    property real fontSizeMedium: 10
    property real fontSizeLarge: 14
    property string primaryFontColor: "#eeeeee"

    //backgrounds
    property string backgroundColorTransparent: "#4a4a4a88"
    property string backgroundColor: "#4a4a4a"
    property string backgroundHighlight: "#9a9a9a"
    property string backgroundColorLight: "#7a7a7a"

    property string dragTileBackgroundColor: "#5a5a5a"
    property string titleBarColor: "#3a3a3a"

    property color borderDarkColor: "#3a3a3a"

    property string mapMarkerFavorite: "#00ff00";
    property string mapMarker: "#ff3333";
    property string mapMarkerHighlight: "#ff8888";

    property string miniMapFillColor: "#ffffff"
    property string miniMapBorderColor: "#ffffff"
    property real miniMapBorderWidth: 1
    property real particleMiniMapOpacity: 0.5

    property int listElementHeight: 30
}

【问题讨论】:

    标签: qt qml qt-quick


    【解决方案1】:

    假设windows,缓存应该在:

    users\yourUser\AppData\Local\yourApp\cache\qmlcache.

    有一个已知的bug,我其实是discovered,在实例化QML引擎之前通过qputenv("QML_DISABLE_DISK_CACHE", "1");禁用缓存在main.cpp会处理缓存问题。

    【讨论】:

    • 感谢您的回答和记录错误!对我来说似乎有点傻,项目相关数据应该存储在用户文件夹中。
    • windows 就是这样做的。它依赖于平台。标准系统路径等。
    猜你喜欢
    • 2021-05-19
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    相关资源
    最近更新 更多