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

From Qt Wiki
Jump to: navigation, search
 
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:HowTo]]<br />[[Category:Snippets]]
+
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
 +
 
 +
[[Category:HowTo]]
 +
[[Category:Snippets]]
  
 
'''Български''' [[How_to_create_a_custom_calender_widget|English]]
 
'''Български''' [[How_to_create_a_custom_calender_widget|English]]
Line 5: Line 8:
 
= Промяна на външния вид на QCalendarWidget =
 
= Промяна на външния вид на QCalendarWidget =
  
Има много различни начини, по които може да се направи календар. Най-лесният би бил чрез използване на &quot;QCalendarWidget&amp;quot;:http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html. Обаче този клас предоставя ограничен контрол над външния вид.
+
Има много различни начини, по които може да се направи календар. Най-лесният би бил чрез използване на [http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html QCalendarWidget]. Обаче този клас предоставя ограничен контрол над външния вид.
  
Този проблем може да бъде разрешен чрез наследяване на &quot;QCalendarWidget&amp;quot;:http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html.<br />Приложен е примерен клас, който обяснява модифициран календар.
+
Този проблем може да бъде разрешен чрез наследяване на [http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html QCalendarWidget].
 +
Приложен е примерен клас, който обяснява модифициран календар.
  
Клетките, или отделните дни са персонализирани и за да направим това контролираме метода &quot;paintCell&amp;quot;: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.
  
 
'''Пример:'''
 
'''Пример:'''
  
<code>class ourCalendarWidget : public QCalendarWidget<br />{
+
<code>class ourCalendarWidget : public QCalendarWidget
 +
{
  
 
Q_OBJECT
 
Q_OBJECT
  
public:<br /> ourCalendarWidget(QWidget *parent = 0) : QCalendarWidget(parent){}<br /> ~ourCalendarWidget() {}
+
public:
 +
ourCalendarWidget(QWidget *parent = 0) : QCalendarWidget(parent){}
 +
~ourCalendarWidget() {}
  
void ourCall(QDate date)<br />{<br /> // here we set some conditions<br /> update();<br />}
+
void ourCall(QDate date)
 +
{
 +
// here we set some conditions
 +
update();
 +
}
  
protected:<br />void paintCell(QPainter *painter, const QRect &amp;rect, const QDate &amp;date) const<br />{<br /> if ( ) // our conditions<br /> { // When the conditions are matched, passed QDate is drawn as we like.
+
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-&gt;save();<br /> painter-&gt;drawEllipse(rect); // here we draw n ellipse and the day—<br /> painter-&gt;drawText(rec, Qt::TextSingleLine, Qt::AlignCenter,QString::number(date.day()));<br /> painter-&gt;restore();<br /> }<br /> else<br /> { // if our conditions are not matching, show the default way.<br /> QCalendarWidget::paintCell(painter, rect, date);<br /> }<br />}</code>
+
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);
 +
}
 +
}</code>

Latest revision as of 15:35, 29 March 2015

This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

Български 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);
 }
}