名單是否有一種方式來獲得的可見天列表當月視圖(包括以前/下個月也是可見的那些)QML日曆:可見天
0
A
回答
0
如果有人感興趣,我發現了一個更快捷的解決方法。以下代碼考慮從週一或週日開始的一週。
我檢查一個月的第一天是什麼日子,並得到第一週的週一/週日,然後我通過day = firstDay + X
檢查X goes from 0 to 42
。
function checkMonthlyCases(currentYear, currentMonth){
var firstMonthDay = new Date(currentYear,currentMonth,1,0)
var firstVisibleDay = new Date(firstMonthDay.getTime() - (((firstMonthDay.getDay() === Locale.Sunday) ? Qt.Sunday : firstMonthDay.getDay()) - 1) * 86400000)
if(startDay == Qt.Sunday){
firstVisibleDay = new Date(firstVisibleDay.getTime() - 86400000);
}
for(var i=0; i< 42; i++){ // 42: number of visible days
var checkDay = new Date(firstVisibleDay.getTime() + i*86400000)
var count = getDayCaseCount(checkDay)
}
}
2
如果我們檢查的代碼Calendar
here我們可以找到一個可疑的財產__model
。我們發現,它始終是42的count
- 這是可見的天數。
的問題是,在QML,我們真的不能訪問的QAbstractItemModel
的後裔,因爲我們需要一個QModelIndex
來獲取數據,與int
,而不是roleNames
鬥爭,以確定角色e.t.c.
所以我們需要引入一個小幫手,它提供get(index)
函數給我們,從ListModel
已知。作爲基礎,我們可以使用QIdentityProxyModel
,我們將通過缺少的暴露方法來擴展。
qmlproxymodel.h
#ifndef QMLPROXYMODEL_H
#define QMLPROXYMODEL_H
#include <QObject>
#include <QIdentityProxyModel>
#include <QMap>
class QMLProxyModel : public QIdentityProxyModel
{
Q_OBJECT
public:
QMLProxyModel(QObject* parent = nullptr);
public slots:
QMap<QString, QVariant> get(int row_index) const;
};
#endif // QMLPROXYMODEL_H
qmlproxymodel.cpp
#include "qmlproxymodel.h"
QMLProxyModel::QMLProxyModel(QObject* parent)
: QIdentityProxyModel(parent)
{
}
QMap<QString, QVariant> QMLProxyModel::get(int row_index) const
{
QMap<QString, QVariant> ret;
QModelIndex ind = index(row_index, 0);
QHash<int, QByteArray> roles = roleNames();
// for some reason the itemData-method always throw a index-out-of-range exception
for (int e : roles.keys()) {
ret.insert(roles.value(e), data(ind, e));
}
return ret;
}
然後我們在main.cpp中註冊這個新類型QML
qmlRegisterType<QMLProxyModel>("QMLProxyModel", 1, 0, "QMLProxyModel");
最後,我們用它在QML:
Calendar {
id: cal
anchors.fill: parent
}
QMLProxyModel {
id: pm
sourceModel: cal.__model
onDataChanged: console.log("Some Data has changed", pm.get(0).date)
}
在這裏,我只要輸出的模式變化的數據首先顯示日期的日期 - 也就是說,當選擇了下個月。
對於您而言,編寫一個JS函數來遍歷QMLProxyModel
的所有(42)元素以將內容添加到您所需的任何數據結構應該很容易。
+0
太棒了!謝謝!!! – laurapons
相關問題
- 1. WPF日曆可見日期
- 2. Bootstrap datetimepicker日曆不可見
- 3. 始終可見qml
- 4. 日曆天有一天出
- 5. Ajax日曆總是可見的
- 6. 內容在CodeIgniter日曆中不可見
- 7. 爲什麼日曆的datapicker不可見?
- 8. 日曆(GregorianCalendar).complete()方法不可見?
- 9. 無法更改日曆的可見性
- 10. jQuery的天日曆
- 11. 將7天日曆更改爲5天日曆
- 12. 如何在角度 - 日曆日曆中獲取可見日期範圍
- 13. 無法更改qml日曆的firstDayOfWeek Qt5.7.0
- 14. 將7天日曆更改爲5天
- 15. Wordpress日曆中的天數
- 16. 日曆getFirstDayOfWeek到星期天
- 17. JS日曆短兩天
- 18. 日曆天渲染事件
- 19. 用日曆天填充UITableView
- 20. PHP日曆多天活動
- 21. 日曆認爲當天是
- 22. QML動畫可見屬性更改
- 23. MapQuickItem在QML地圖中不可見
- 24. QML圖像清單不可見
- 25. 使Qml可見的私有C++函數
- 26. 使用QQmlContext :: setContextObject使QML對象可見QML
- 27. UWP日曆視圖可見日期範圍
- 28. 兩個日曆日期不一致的Java日曆天
- 29. asp.net日曆控件。日期從目前的012天后可選
- 30. RichFaces的日曆今天日期
你想要什麼格式? – derM
或簡寫爲:答案是**是** :-D – derM