Прежде чем открывать ошибку в проекте Qt, я хотел бы спросить вас, что я делаю что-то неправильно или Qml Calendar действительно сходит с ума.Компонент Qml Calendar сходит с ума?
Отсюда следует код, который может быть использован, чтобы проверить его:
import QtQuick 2.5
import QtQuick.Window 2.0
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Layouts 1.1
Window {
visible: true
width: 1024
height: 768
ColumnLayout {
anchors.fill: parent
anchors.margins: 8
Calendar {
id: calendar
Layout.fillWidth: true
Layout.fillHeight: true
weekNumbersVisible: true
selectedDate: new Date("2015/01/01")
frameVisible: true
focus: true
onVisibleMonthChanged: visibleMonthChangedRef.currDate = visibleYear+"/"+visibleMonth
onVisibleYearChanged: visibleYearChangedRef.currDate = visibleYear+"/"+visibleMonth
}
Label {
id: visibleMonthChangedRef
Layout.fillWidth: true
property string currDate: ""
text: "onVisibleMonthChanged -> " + currDate
Component.onCompleted: font.pointSize = font.pointSize*2
}
Label {
id: visibleYearChangedRef
Layout.fillWidth: true
property string currDate: ""
text: "onVisibleYearChanged -> " + currDate
Component.onCompleted: font.pointSize = font.pointSize*2
}
}
}
Спокойный, запустить приложение и вы увидите календарь, а также несколько ярлыков, которые сообщают информацию о и visibleYear
, как это предусмотрено компонентом Calendar
. Эти этикетки заполняются соответственно onVisibleYearChanged
и onVisibleMonthChanged
от Calendar
. Выбранная дата 2015/01/01.
Ну, вернуться в месяц к 2014 г.
onVisibleYearChanged
выглядит быть правильным при обращении к и visibleYear
свойства Calendar
, в то время как onVisibleMonthChanged
смотрит на меня, как жить в далеком будущем.
Теперь попробуйте перейти в месяц к 2015 году
Опять же, в то время как onVisibleYearChanged
все еще ведет себя правильный путь, то onVisibleMonthChanged
обращается к Calendar
компонент, который сидит в прошлом.
Вы можете вернуться назад и вперед в течение нового года, и функция, реагирующая на сигнал onVisibleMonthChanged
, никогда не будет вести себя правильно, поскольку она выглядит так, как вызывается, когда все внутренние свойства еще не установлены должным образом.
Это говорит о том, что я делаю что-то неправильно и, следовательно, проблема в моем коде (конечно, вышеприведенный пример является небольшим примером из более сложного проекта), или я действительно нашел ошибку в «Календаре» и я должен продолжить открытие билета в проект Qt?