Български English

Промяна на външния вид на QCalendarWidget

Има много различни начини, по които може да се направи календар. Най-лесният би бил чрез използване на QCalendarWidget [doc.qt.nokia.com]. Обаче този клас предоставя ограничен контрол над външния вид.

Този проблем може да бъде разрешен чрез наследяване на QCalendarWidget [doc.qt.nokia.com].
Приложен е примерен клас, който обяснява модифициран календар.

Клетките, или отделните дни са персонализирани и за да направим това контролираме метода paintCell [doc.qt.nokia.com], който е protected.

Пример:

  1. class ourCalendarWidget : public QCalendarWidget
  2. {
  3.  
  4. Q_OBJECT
  5.  
  6. public:
  7.          ourCalendarWidget(QWidget *parent = 0) : QCalendarWidget(parent){}
  8.         ~ourCalendarWidget() {}
  9.  
  10. void ourCall(QDate date)
  11. {
  12.     // here we set some conditions
  13.     update();
  14. }
  15.  
  16. protected:
  17. void paintCell(QPainter *painter, const QRect &rect, const QDate &date) const
  18. {
  19.     if ( ) // our conditions
  20.     {     // When the conditions are matched, passed QDate is drawn as we like.                              
  21.        
  22.         painter->save();
  23.         painter->drawEllipse(rect);   // here we draw n ellipse and the day--
  24.         painter->drawText(rec, Qt::TextSingleLine, Qt::AlignCenter,QString::number(date.day()));
  25.         painter->restore();
  26.     }
  27.     else
  28.     {   // if our conditions are not matching, show the default way.
  29.         QCalendarWidget::paintCell(painter, rect, date);
  30.     }
  31. }

Това е, приятно програмиране!

Categories: