のリストは、我々はのコードを調べる場合QMLカレンダー:目に見える日
答えて
誰かが興味を持っていれば、より迅速な回避策が見つかりました。次のコードでは、月曜日または日曜日に開始する週を考慮しています。
月の最初の日をチェックし、最初の週の月曜日/日曜日を取得してから、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)
}
}
(も表示されている次/前の月からのものも含めて)現在の月ビューのために目に見える日のリストを取得する方法はありますCalendar
here疑わしいプロパティ__model
が見つかります。我々は、それが常にcount
の42 - 表示される日の量であることがわかります。
問題であり、私たちは役割e.t.c.を識別するために、データをフェッチするためにint
代わりroleNames
のと闘争をQModelIndex
を必要とするようQMLに私たちは本当に、QAbstractItemModel
秒の子孫にアクセスできないことを
ListModel
から知られているように、私たちはget(index)
の機能を提供する小さなヘルパーを紹介する必要があります。このための基盤として、公開されていない方法で拡張する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に
qmlRegisterType<QMLProxyModel>("QMLProxyModel", 1, 0, "QMLProxyModel");
にQMLにこの新しいタイプを登録210
は最後に、私たちはQMLでそれを使用する:
Calendar {
id: cal
anchors.fill: parent
}
QMLProxyModel {
id: pm
sourceModel: cal.__model
onDataChanged: console.log("Some Data has changed", pm.get(0).date)
}
ここでI出力モデル変更のデータはいつでも最初の表示される日付の日 - つまり、来月が選択されています。
QMLProxyModel
のすべての(42)要素を反復処理するJS関数を記述して、任意のデータ構造にコンテンツを追加するのは簡単です。
素晴らしいです!ありがとう! – laurapons
- 1. 日付ピッカー目に見えないボタン
- 2. JScrollBarの目に見える
- 3. クリックすると目に見えない目に見えるアンドロイドクロノメーターの作り方
- 4. がある( ':目に見える')。==真-見えない親
- 5. 目に見えると約束する
- 6. 目に見える排出量?
- 7. CSS:overflow-y:scroll;オーバーフロー-X:目に見える
- 8. 目に見えるブラウザのリフロー
- 9. カレンダー日曜日から日曜日
- 10. チームビルド中に "目に見えない"チェックイン
- 11. AnyGanttで目に見える開始日と終了日を取得する方法は?
- 12. jQueryの/( ':目に見える')です見つける問題
- 13. カレンダーから日付を日付に変えて、最初のレコードはテーブルから
- 14. カレンダー順で日付列を並べ替えるR
- 15. アンドロイドのボタンに目に見えるものと目に見えないものを使う方法
- 16. JSカレンダー2日短
- 17. GoogleカレンダーAPI祝日
- 18. カレンダー日付ピッカーUWP
- 19. 目に見えないマウスのonmouseover?
- 20. herokuは目に見えない
- 21. IE8で目に見えないDivs
- 22. スピナーの目に見えない背景?
- 23. スクロールの目に見えないdiv
- 24. QtextEditの目に見えないテキスト
- 25. Reactjs目に見えないコンポーネント
- 26. 目に見えないreCAPTCHAのsiteverify - エラーコード
- 27. JSPコンテンツは目に見えて
- 28. 要素シャドーが目に見えない
- 29. 目に見えないgitメタコミット
- 30. カレンダー - 週を日付に変換する
どのような形式ですか? – derM
それを短くする:答えは**はい**です:-D – derM