2017-08-26 28 views
1

我正在爲我的應用程序在QML中創建一個自定義控件。我想在桌面和Android上運行,所以我使用Material Style作爲應用程序。這將顏色方案應用於所有現有的Qt Quick Controls 2控件(按鈕,工具欄等)。但是,如何在我的控制上使用這些顏色?我知道我可以使用與十六進制代碼相同的顏色或任何其他顏色,但是如果我更改主題中的重音顏色等,我希望我的控件的顏色發生變化。如何創建一個尊重Material Style顏色的自定義QML控件?

我試過SystemPalette但顏色沒有似乎不遵循Material Style,而是始終遵循默認樣式。

我可以訪問材質顏色嗎?如果應用程序在非物料模式下運行會發生什麼?

回答

1

只是想通了。在任何實際控件上設置一個id,然後您可以訪問「額外」顏色,如controlId.Material.buttonColor

1

可以導入樣式:

import QtQuick.Controls.Material 2.2 

import QtQuick.Controls.Universal 2.2 

顏色然後可通過單:

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

目前的風格,可以從C++與檢索QQuickStyle(您需要鏈接Qt5QuickControls2庫)

+0

謝謝!這有效......但這意味着即使我不在材質模式中,我也使用了材質顏色。有什麼方法可以檢測到我在哪個模式? – singpolyma

+0

編輯我的文章的方式做到這一點 –

+0

嗯,試圖實際使用這個我發現並不是所有的顏色都在那裏。例如,'Button'的默認背景顏色在深色和淺色主題之間變化,但這兩個顏色都不在「材質」中。我必須創建一個隱藏按鈕並訪問'button.background.color'來獲取它:/ – singpolyma

0

請記住,您還可以設置樣式顏色。而且這也不是一個複雜的主題,每種風格都有3-4種顏色。

因此,您可以在單件中定義您自己的一組顏色,設置您使用這些顏色的任何樣式,並在您的自定義內容中使用相同的顏色。通過這種方式,您可以在默認樣式和元素之間實現統一,並且無論您使用的是哪種樣式,顏色更改都會影響所有內容。

相關問題