How to create a custom calender widget/bg
Jump to navigation
Jump to search
Български English
Промяна на външния вид на QCalendarWidget
Има много различни начини, по които може да се направи календар. Най-лесният би бил чрез използване на "QCalendarWidget":http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html. Обаче този клас предоставя ограничен контрол над външния вид.
Този проблем може да бъде разрешен чрез наследяване на "QCalendarWidget":http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html.
Приложен е примерен клас, който обяснява модифициран календар.
Клетките, или отделните дни са персонализирани и за да направим това контролираме метода "paintCell":http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html#paintCell, който е protected.
Пример:
class ourCalendarWidget : public QCalendarWidget<br />{
Q_OBJECT
public:<br /> ourCalendarWidget(QWidget *parent = 0) : QCalendarWidget(parent){}<br /> ~ourCalendarWidget() {}
void ourCall(QDate date)<br />{<br /> // here we set some conditions<br /> update();<br />}
protected:<br />void paintCell(QPainter *painter, const QRect &rect, const QDate &date) const<br />{<br /> if ( ) // our conditions<br /> { // When the conditions are matched, passed QDate is drawn as we like.
painter->save();<br /> painter->drawEllipse(rect); // here we draw n ellipse and the day—<br /> painter->drawText(rec, Qt::TextSingleLine, Qt::AlignCenter,QString::number(date.day()));<br /> painter->restore();<br /> }<br /> else<br /> { // if our conditions are not matching, show the default way.<br /> QCalendarWidget::paintCell(painter, rect, date);<br /> }<br />}