У меня есть настольное Python приложение с простым пользовательским интерфейсом QML (PyQt5 и QtQuick 2.2). Он работает на Linux / KDE.
Без назначения указанных c цветов таким элементам, как Label и TextField, KDE назначает соответствующие цвета на основе темы рабочего стола (например, Breeze Light или Beeeze Dark). Это хорошо работает почти для всех элементов приложения, и мне нравится простота этого подхода.
Однако я определил список с флажками для каждого элемента списка. Для этих элементов списка операционная система неправильно назначает цвет текста, как и для всех других элементов .
Как показано в приведенном ниже коде, для contentItem: Text
я должен назначьте явный цвет или KDE по умолчанию для черного как для Breeze Light, так и для Breeze Dark.
Rectangle {
Layout.row: 2
Layout.column: 2
id: comboBox
width: 150;height: 400
color: 'transparent'
DelegateModel {
id: visualModel
model: ListModel {
ListElement { name: "name1"; selected: false }
ListElement { name: "name2"; selected: false }
}
groups: [
DelegateModelGroup { name: "selected" }
]
delegate: Item {
width: parent.width
implicitHeight: 34
function toggle() { control.toggle() }
M2.CheckDelegate {
id: control
anchors.fill: parent
text: model.name
highlighted: comboBox.highlightedIndex == index
checked: model.selected
onCheckedChanged: model.selected = checked,
model.selected = checked,
(checked) ? cb_user.text +=
model.name + ' ' : cb_user.text =
cb_user.text.replace
(model.name + ' ', '')
contentItem: Text {
text: control.text
font: control.font
opacity: enabled ? 1.0 : 0.3
color: 'white'
elide: Text.ElideRight
verticalAlignment: Text.AlignVCenter
}
}
}
}
ListView {
anchors.fill: parent
model: visualModel
}
}
Моя цель - сделать это приложение очень простым. Я бы предпочел не использовать их. Поскольку все остальное «просто работает», я хотел бы знать, есть ли способ назначить цвет contentItem: Text
на основе цвета других текстовых полей или надписей в приложении, для которых операционная система правильно назначает цвета для каждой темы.
Приложение имеет элемент, например, с id: title
, и оно получает соответствующий цвет, когда цвет явно не определен в моем QML.
Но во время выполнения title.color не определено в соответствии с этим кодом:
ApplicationWindow {
Component.onCompleted: {
console.log( "title.color: " + title.color )
}
Если бы я мог получить этот цвет во время выполнения и назначить его для моего неподходящего цвета текста, это могло бы быть моим решением.
Я надеюсь, что найдите способ автоматически назначить цвет, который операционная система назначает другому тексту.