如何创建尊重“材质样式”颜色的自定义QML控件?

sin*_*yma 4 qt qml qt5 qtquick2 qtquickcontrols2

我正在为我的应用程序在QML中创建一个自定义控件。我想同时在台式机和Android上运行,因此我在应用程序中使用了Material Style。这会将颜色方案应用于所有现有的Qt Quick Controls 2控件(按钮,工具栏等)。但是,如何在控件上使用这些颜色?我知道我可以只用十六进制代码或任何其他颜色使用相同的颜色,但是如果要更改主题中的强调色等,我希望控件的颜色也可以更改。

我试过了,SystemPalette但是那里的颜色似乎并没有遵循Material Style,而是总是遵循默认的样式。

我是否可以使用“材料”颜色?如果应用程序在非材料模式下运行会怎样?

Jea*_*ier 5

您可以导入样式:

import QtQuick.Controls.Material 2.2
Run Code Online (Sandbox Code Playgroud)

要么

import QtQuick.Controls.Universal 2.2
Run Code Online (Sandbox Code Playgroud)

然后可以通过单例获得颜色:

console.log(Material.accent)
console.log(Material.primary)
// etc...
Run Code Online (Sandbox Code Playgroud)

可以使用QQuickStyle从C ++中检索当前样式(您需要链接该Qt5QuickControls2库)


sin*_*yma 3

刚刚想通了。在任何实际控件上设置一个id,然后您可以访问“额外”颜色controlId.Material.buttonColor