Difference between revisions of "How to create a custom calender widget/bg"

From Qt Wiki
Jump to: navigation, search
(Add "cleanup" tag)
(Convert ExpressionEngine links)
Line 8: Line 8:
 
= Промяна на външния вид на QCalendarWidget =
 
= Промяна на външния вид на QCalendarWidget =
  
Има много различни начини, по които може да се направи календар. Най-лесният би бил чрез използване на "QCalendarWidget":http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html. Обаче този клас предоставя ограничен контрол над външния вид.
+
Има много различни начини, по които може да се направи календар. Най-лесният би бил чрез използване на [http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html QCalendarWidget]. Обаче този клас предоставя ограничен контрол над външния вид.
  
Този проблем може да бъде разрешен чрез наследяване на "QCalendarWidget":http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html.
+
Този проблем може да бъде разрешен чрез наследяване на [http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html QCalendarWidget].
 
Приложен е примерен клас, който обяснява модифициран календар.
 
Приложен е примерен клас, който обяснява модифициран календар.
  
Клетките, или отделните дни са персонализирани и за да направим това контролираме метода "paintCell":http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html#paintCell, който е protected.
+
Клетките, или отделните дни са персонализирани и за да направим това контролираме метода [http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html#paintCell paintCell], който е protected.
  
 
'''Пример:'''
 
'''Пример:'''

Revision as of 08:45, 4 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);
}

}