Jump to content

How to create a custom calender widget

From Qt Wiki
Revision as of 18:54, 28 June 2015 by Wieland (talk | contribs) (Cleanup)

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

There are numerous ways to make a calendar. And the simplest one , must be using the QCalendarWidget. However, we have limited control over the appearance of this widget.

Inheriting the QCalendarWidget can solve the issue. Here is the example class which explains a 'custom' calendar widget.

The cells, or the particular days are customized, and in order to do this , we need to take control over the protected function paintCell

Example:

class ourCalendarWidget : public QCalendarWidget
{
    Q_OBJECT
public:
    ourCalendarWidget(QWidget* parent=0) 
        : QCalendarWidget(parent) 
    {
    }

    ~ourCalendarWidget() 
    {
    }

    void ourCall(QDate date) 
    {
        // here we set some conditions
        update();
    }

protected:
    void paintCell(QPainter *painter, const QRect &rect, const QDate &date) const
    {
        if ( ) { // our conditions
            // When the conditions are matched, passed QDate is drawn as we like.
            painter->save();
            painter->drawEllipse(rect); // here we draw n ellipse and the day—
            painter->drawText(rec, Qt::TextSingleLine, Qt::AlignCenter,QString::number(date.day()));
            painter->restore();
        } else { // if our conditions are not matching, show the default way.
            QCalendarWidget::paintCell(painter, rect, date);
        }
    }
};

That is all. Happy coding.