问题描述
我在我的QtQuick应用程序中使用Universal style,并且想提供一个ColorDialog来调整强调色。
我有这样的东西:
ColorDialog {
id: accChooser
title: "Please choose a color"
onAccepted: {
setGlobalAccentColor(accChooser.color)
}
}
*请注意,我不能简单地在子项中写Universal.accent=...
,因为它对父项没有影响。请参见this。
和此功能:
function setGlobalAccentColor(accentColor){
Universal.accent = accentColor
}
当函数setGlobalAccentColor
与accChooser
在同一个QML文件中定义时,它起作用,但是如果我在外部JS文件(例如helpers.js
)中定义该函数并通过导入:
import "helpers.js" as JSHelpers
并以这种方式使用它:
ColorDialog{
...
JSHelpers.setGlobalAccentColor(colorDialog.color)
...
}
谢谢。
解决方法
可能需要在javascript文件中导入通用样式。
文档universal style如下(请参阅相关性部分)
必须分别导入通用样式,才能访问 通用样式特有的属性
您可以按照以下所述尝试将importing插入javascript(helpers.js)文件。
data.table
然后尝试访问(例如:.import QtQuick.Controls.Universal 2.12 as JsUniversal
..)。
请注意,我不能简单地在子项中编写Universal.accent = ...,因为它对父项没有影响。
虽然将其设置为子级不会影响整个应用程序,但您可以将其直接设置为整个窗口。
Window.window.Universal.accent = accentColor;
Universal
是attached object,您可以通过执行<object>.<AttachingType>
将其附加到任意对象上,而不仅仅是当前对象。
我们通过另一个附加属性Window.window
访问该窗口,将其附加到父窗口。