2017-01-07 5 views
1

Я играю с Qt 5.8 RC и новым атрибутом System, представленным как в Universal, так и в материалах.Как использовать Universal.System или Material.System в последнем Qt 5.8?

Однако при разработке настраиваемого приложения можно выбрать Universal или Material в комбинации с Dark, Light или System. Как я могу узнать, что на самом деле система - это не строка «Система», а «Темный» или «Свет»? не

Вот что я пытаюсь построить (settings.qml): Miam-Player-QML

RadioButton { 
    text: qsTr("Light") 
    checked: appSettings.theme === "Light" 
    ButtonGroup.group: modeBG 
    onClicked: { 
     appSettings.theme = "Light" 
     appSettings.background = "white" 
     appSettings.menuPaneColor = "#eeeeee" 
    } 
} 
RadioButton { 
    text: qsTr("Dark") 
    checked: appSettings.theme === "Dark" 
    ButtonGroup.group: modeBG 
    onClicked: { 
     appSettings.theme = "Dark" 
     appSettings.background = "black" 
     appSettings.menuPaneColor = "#171717" 
    } 
} 
RadioButton { 
    text: qsTr("System theme") 
    ButtonGroup.group: modeBG 
    onClicked: { 
     appSettings.theme = "System" 
     //appSettings.background = "black" 
     //appSettings.menuPaneColor = "#171717" 
    } 
} 

Очевидно, следующий код, который используется для работы с «жесткие» значения больше не работает (main.qml):

ToolButton { 
    id: burgerMenu 
    checkable: appSettings.burgerMenuIsChecked 
    contentItem: Image { 
     fillMode: Image.Pad 
     horizontalAlignment: Image.AlignHCenter 
     verticalAlignment: Image.AlignVCenter 
     source: "qrc:/images/" + appSettings.style + "/" + appSettings.theme + "/drawer.png" 
    } 
    ... 
} 

Есть идеи?

+0

Вы можете указать различные [файлы конфигурации] (https://doc-snapshots.qt.io/qt5-5.8/qtquickcontrols2-configuration.html) и попытаться выполнить эту проверку на C++ – DuKes0mE

ответ

1

The documentation говорит:

Установка темы для System выбирает либо светлую или темную тему на основе системы цветов темы. Однако при чтении значения свойство theme, значение никогда не является Системой, а актуальной темой.

Так что, если вы проверите значения Material.theme и Universal.theme, как должны вернуть свои эффективные значения, а не значение, которое вы установили.

+0

Хм .. Это странно, потому что onClicked : {console.log (Material.theme)} всегда возвращает qml: 0 в Qt Creator – MBach

+0

'Material.theme: Material.Dark; Component.onCompleted: print (Material.theme) 'печатает' 1' для меня. Установка 'Material.theme: Material.System' будет использовать то, что использует ваша система, поэтому, если это легкая тема, она всегда будет возвращать' 0': http://code.qt.io/cgit/qt/qtquickcontrols2. git/tree/src/import/controls/material/qquickmaterialstyle_p.h # n104 – Mitch

+0

Я думаю, что RC, который я загрузил, не работает хорошо. Когда я начинаю новый проект с нуля с помощью помощника (и помещаю последний номер выпуска в импорт), 'Accent = BlueGrey' в' qtquickcontrols2.conf' не работает: я вижу ошибку в консоли 'Theme = Dark' или' Theme = Light' отлично, но 'Theme = System' всегда отвлекается на свет. – MBach

Смежные вопросы