我正在尝试使用qml设计一个qt快速应用程序。从我在qt的文档中收集到的信息来看,这些控件支持自动样式化(例如,存在一个材质的浅色/材质的深色主题。
但是,当我尝试将其应用于tabview控件时,无法获得要应用的样式。我可以进行适当的绑定ala Rectangle { color: Material.color(Material.Red)}
,这对于查找任何预定义的颜色非常有效,但是我似乎无法访问Material.background
如何最好地将主题应用于不支持主题的控件?似乎无法将属性绑定到附加的属性上-或至少qt / qml似乎感到困惑,因为Material.
也被视为名称空间。
import QtQuick 2.9
import QtQuick.Window 2.3
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.1
import QtQuick.Controls.Styles 1.2
import QtQuick.Controls.Material 2.1
ApplicationWindow {
id: mainWindow;
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Material.theme: Material.Dark
Material.accent: Material.Purple
TabView {
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
tabPosition: Qt.BottomEdge
Material.theme: Material.Dark
Material.accent: Material.Purple
Tab {
title: "Red"
Material.theme: Material.Dark
Material.accent: Material.Purple
}
Tab {
title: "Blue"
Rectangle { color: "blue" }
}
Tab {
title: "Green"
Material.theme: Material.Dark
Material.accent: Material.Purple
}
style: TabViewStyle {
frameOverlap: 1
tab: Rectangle {
color: styleData.selected ? "steelblue" :"lightsteelblue"
border.color: "steelblue"
implicitWidth: Math.max(text.width + 4, 80)
implicitHeight: 20
radius: 2
Text {
id: text
anchors.centerIn: parent
text: styleData.title
color: styleData.selected ? "white" : "black"
}
}
frame: Item {
}
}
}
}
[TabView
来自控件1。您应该使用TabBar
和TabButton
,因为材料样式仅在Qt Quick Controls 2中可用:]
https://doc.qt.io/qt-5/qtquickcontrols2-differences.html#type-comparison-table