来自单例的样式在构建期间未更新
Style from singleton not updated during build
我正在尝试通过我使用 qmlRegisterSingletonType
注册的样式单例 Style.qml
来设置我的应用程序的样式。当我对单例 qml 文件进行更改时,重建应用程序时这些文件不会更新。
以下行为使我相信这是一个缓存问题:当我将新值添加到样式文件的顶部时,所有旧值都会相应地移动。例如,查看下面给出的文件,如果我向 fontsizes 添加另一行,此移动会导致任何值为 backgroundColorHighlight
的项目在应用程序中显示为 backgroundColor
的颜色。所以颜色被替换为它曾经所在的线的值。
我在哪里可以找到导致这种奇怪行为的缓存文件(如果这是问题所在)并手动清除它?
到目前为止我已采取的步骤:
- 通过 Qt Creator 清理了项目
- 通过删除构建文件夹手动清理项目
- 已检查
.qmlc
个文件
- 已将
QML_DISABLE_DISK_CACHE
添加到 .pro 文件
- 运行
qmake
重建前
现在我完全没有想法了。 Qt Creator / qmake 是否还有其他地方可以 "hide" 缓存文件?
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
}
假设windows,缓存应该在:
users\yourUser\AppData\Local\yourApp\cache\qmlcache
.
有一个已知的 bug, which I actually discovered,在实例化 QML 引擎之前通过 qputenv("QML_DISABLE_DISK_CACHE", "1");
在 main.cpp
中禁用缓存将处理缓存问题。
我正在尝试通过我使用 qmlRegisterSingletonType
注册的样式单例 Style.qml
来设置我的应用程序的样式。当我对单例 qml 文件进行更改时,重建应用程序时这些文件不会更新。
以下行为使我相信这是一个缓存问题:当我将新值添加到样式文件的顶部时,所有旧值都会相应地移动。例如,查看下面给出的文件,如果我向 fontsizes 添加另一行,此移动会导致任何值为 backgroundColorHighlight
的项目在应用程序中显示为 backgroundColor
的颜色。所以颜色被替换为它曾经所在的线的值。
我在哪里可以找到导致这种奇怪行为的缓存文件(如果这是问题所在)并手动清除它?
到目前为止我已采取的步骤:
- 通过 Qt Creator 清理了项目
- 通过删除构建文件夹手动清理项目
- 已检查
.qmlc
个文件 - 已将
QML_DISABLE_DISK_CACHE
添加到 .pro 文件 - 运行
qmake
重建前
现在我完全没有想法了。 Qt Creator / qmake 是否还有其他地方可以 "hide" 缓存文件?
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
}
假设windows,缓存应该在:
users\yourUser\AppData\Local\yourApp\cache\qmlcache
.
有一个已知的 bug, which I actually discovered,在实例化 QML 引擎之前通过 qputenv("QML_DISABLE_DISK_CACHE", "1");
在 main.cpp
中禁用缓存将处理缓存问题。