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

时间:2017-08-26 12:57:00

标签: qt qml qt5 qtquick2 qtquickcontrols2

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

我已尝试SystemPalette,但其中的颜色似乎并不遵循材质风格,而是始终遵循默认风格。

我可以访问材料颜色吗?如果应用程序在非物料模式下运行会发生什么?

3 个答案:

答案 0 :(得分:4)

您可以导入样式:

import QtQuick.Controls.Material 2.2

import QtQuick.Controls.Universal 2.2

然后可以通过单身人士获得颜色:

console.log(Material.accent)
console.log(Material.primary)
// etc...

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

请记住,您还可以设置样式颜色。它也不是一个复杂的主题,每种风格有3-4种颜色。

因此,您可以在单身中定义自己的一组颜色,将您使用的任何样式设置为这些颜色,并在自定义内容中使用相同的颜色。这样,您将在默认设置的元素和元素之间实现一致性,颜色更改将影响所有内容,无论您使用哪种样式。