QT быстрое управление стилем материала - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь разработать быстрое приложение qt, используя qml. Из документации 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 {

            }
        }
    }

}

1 Ответ

0 голосов
/ 15 марта 2020

TabView из элементов управления 1. Вы должны использовать TabBar и TabButton, так как стиль материала доступен только в Qt Quick Controls 2:

https://doc.qt.io/qt-5/qtquickcontrols2-differences.html#type -сравнение- таблица

...