QML Calendar - jak ustawic przezroczyste tlo
-
Czesc
Jak mozna ustawic przezroczyste tlo dla obiektu Calendar? Chce miec przeroczyste tlo, a tekst i ewentualne obramowanie jakies polprzezroczyste. Obiekt Calendar bedzie umieszczony na innym obiekcie ktory ma ustawiony obrazek jako tlo i chce zeby ten obrazek byl widoczny pod kalendarzem.
Mecze sie juz z tym dosc dlugo i nie mam pojecia co zrobic. Udalo mi sie po wielkich bolach ustawic kolor tla, alee przezroczystosci nie jestem w stanie ustawic. Zawsze sie ustawia biale tlo.Ponizej moj obiekt Calendar. Jesli mozecie, to zweryfikujcie takze reszte, bo QML u mnie bardzo kuleje.
import QtQuick 2.0 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 Rectangle { // color: "red" // color: "transparent" // border.color: "black" x: mainwindow.width*0.4 y: mainwindow.height*0.4 width: mainwindow.width*0.2 height: width visible: true Calendar { id: calendarwidget objectName: "calendarwidget" width: parent.width height: parent.height style: CalendarStyle { dayDelegate: Rectangle { color: styleData.selected ? "#111" : (styleData.visibleMonth && styleData.valid ? "#444" : "#666"); } } activeFocusOnTab: true dayOfWeekFormat: 2 antialiasing: true visible: true // opacity: 1 weekNumbersVisible: true property var date: new Date() visibleMonth: date.getMonth() Timer { id: calendarwidget_date_timer interval: 1000 running: true repeat: true onTriggered: { var date = new Date() calendarwidget_date_timer: date.getDate() } } } }
-
Zgodznie z dokumentacją: https://doc.qt.io/qt-5/qml-qtquick-controls-styles-calendarstyle.html musisz ustawić w
CalendarStyle
wszystkie elementy:- background
- navigationBar
- dayOfWeekDelegate
- weekNumberDelegate
- dayDelegate
I zrobić je na bazie Item (bo Item jest zawsze przezroczysty), albo Rectangle z
color: "transparent"
.A root object - albo odkomentuj kolor przerzroczysty, albo zmień na Item i będzie dobrze.
Co do review:
x: mainwindow.width*0.4 y: mainwindow.height*0.4 width: mainwindow.width*0.2 height: width
Komponent nie powinien wiedzieć za wiele o swoim parencie. Lepiej to ustawić w pliku który danego komponentu używa, a nie tu.
Ponadto, powinieneś używać
anchors
lub layoutów. Sztywne ustawianie x, y to najgorsza opcja z możliwych.