Difference between revisions of "How to create a custom calender widget/bg"
From Qt Wiki
AutoSpider (talk | contribs) (Add "cleanup" tag) |
AutoSpider (talk | contribs) m (AutoSpider moved page How to create a custom calender widget Bulgarian to How to create a custom calender widget/bg: Localisation) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 8: | Line 8: | ||
= Промяна на външния вид на QCalendarWidget = | = Промяна на външния вид на QCalendarWidget = | ||
− | Има много различни начини, по които може да се направи календар. Най-лесният би бил чрез използване на | + | Има много различни начини, по които може да се направи календар. Най-лесният би бил чрез използване на [http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html QCalendarWidget]. Обаче този клас предоставя ограничен контрол над външния вид. |
− | Този проблем може да бъде разрешен чрез наследяване на | + | Този проблем може да бъде разрешен чрез наследяване на [http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html QCalendarWidget]. |
Приложен е примерен клас, който обяснява модифициран календар. | Приложен е примерен клас, който обяснява модифициран календар. | ||
− | Клетките, или отделните дни са персонализирани и за да направим това контролираме метода | + | Клетките, или отделните дни са персонализирани и за да направим това контролираме метода [http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html#paintCell paintCell], който е protected. |
'''Пример:''' | '''Пример:''' | ||
Line 33: | Line 33: | ||
protected: | protected: | ||
− | void paintCell(QPainter *painter, const QRect & | + | void paintCell(QPainter *painter, const QRect &rect, const QDate &date) const |
{ | { | ||
if ( ) // our conditions | if ( ) // our conditions |
Latest revision as of 15:35, 29 March 2015
БългарскиEnglish
Промяна на външния вид на QCalendarWidget
Има много различни начини, по които може да се направи календар. Най-лесният би бил чрез използване на QCalendarWidget. Обаче този клас предоставя ограничен контрол над външния вид.
Този проблем може да бъде разрешен чрез наследяване на QCalendarWidget. Приложен е примерен клас, който обяснява модифициран календар.
Клетките, или отделните дни са персонализирани и за да направим това контролираме метода paintCell, който е protected.
Пример:
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);
}
}