Pytanie jak w tytule.
Czy uważacie, że używanie klas QDate i QCalendar jest intuicyjne w użyciu?
bo przy użyciu QCalendar(QCalendar::System system)
domyślny system kalendarza jest
QCalendar::System::Gregorian 0 The default calendar, used internationally.
np spodziewałem się, że skoro QCalendar ma służyć do odwzorowania wybranego systemu kalendarzowego
A QCalendar object maps a year, month, and day-number to a specific day (ultimately identified by its Julian day number), using the rules of a particular system.
opisu wybranego systemu kalendarzowego to powinien istnieć konstruktor np
QCalendar(QDate date)
do czego zmierzam? Zmierzam do tego, że skoro QCalendar generuje kalendarz gregoriański, to powinienem w łatwy sposób go użyć aby wygenerować sobie kalendarz od wybranej daty przenieść go na widget:
np spodziewałbym się użycia QCalendar w ten sposób:
QDate date(2024,1,1);
QCalendar calendar(date);
//nawet w pętli na konsoli gdybym wypisał zawartość kalendarza, to w końcu to powinien być właściwy kalendarz
//a gdy będę chciał z jakichś powodów zrobić własny QWidgetCalendar i dalej
//tworzyć widżety, tabele etc... aby uzyskać efekt jak na zrzucie niżej to nie sądzicie, że użycie klasy
//QCalendar powinno być intuicyjne?
a obecnie tworzenie kalendarza to droga przez mękę
i wygląda ona tak
QDate date(2024,1,1);
QCalendar calendar;
auto lambda = [&date,&calendar](int i)->QString{return calendar.monthName(QLocale::Language::Polish, i, date.year(), QLocale::LongFormat);};
for(int i=1; i<=calendar.monthsInYear(date.year()); ++i){//teoretycznie rozumiem ale czy jakiś system kalendarza ma więcej miesięcy?
date.setDate(date.year(),i,1);// tego się nie spodziewałem, bo już użyłem konstruktora i nie jest dla mnie ważne jaką datę wpisałem
for(int j=1; j<=calendar.daysInMonth(i,date.year()); ++j){//niby tak, ale po co takie fikołki?
qInfo()<< j << lambda(i) << date.year() << "-" << calendar.dayOfWeek(date.addDays(j-1));
if(calendar.dayOfWeek(date.addDays(j-1))%7==0){
qInfo()<< Qt::endl;
}
}
qInfo()<< Qt::endl;
}
w kodzie jest użyta funkcja
date.setDate(date.year(),i,1);// tego się nie spodziewałem
ale przecież użyłem konstruktora
QDate date(2024,1,1);
i pytanie jest takie. Czy nie uważacie, że używanie klasy QCalendar powinno wyglądać tak jak opisałem to na początku? Bo obecnie aby wygenerować kalendarz, trzeba robić różne fikołki, zwłaszcza, że ta klasa ma zaimplementowane funkcje jak
bool isLeapYear(int year) const
a skoro to jest, to po co dziwne fikołki z czymś prostym jak kalendarz? Zwłaszcza, że jak ktoś będzie chciał użyć kalendarza
QCalendar::System::Julian 8 An ancient Roman calendar.
to klasa QCalendar
powinna już sama uwzględnić odpowiednie obliczenia... i na wyjściu generować właściwy system kalendarzowy
Czy zgadzacie się z moją opinią? Wątek zakładam po to, bo chcę się dowiedzieć czy waszym zdaniem użycie tego tworu jest intuicyjne? Bo ja szczerze mówiąc męczyłem się z tym jeden dzień...
nie wiem czy ktoś będzie zainteresowany dyskusją, no ale wrzucam, może czegoś się dowiem