How to create a custom calender widget/de: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
AutoSpider (talk | contribs) m (AutoSpider moved page How to create a custom calender widget German to How to create a custom calender widget/de: Localisation) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{Cleanup | reason=Auto-imported from ExpressionEngine.}} | |||
[[Category:HowTo]] | [[Category:HowTo]] | ||
[[Category:Snippets]] | [[Category:Snippets]] | ||
Line 7: | Line 9: | ||
= Die visuelle Darstellung von QCalendarWidget verändern = | = Die visuelle Darstellung von QCalendarWidget verändern = | ||
Es gibt zahllose Wege einen Kalender zu erstellen. Der einfachste ist wahrscheinlich | Es gibt zahllose Wege einen Kalender zu erstellen. Der einfachste ist wahrscheinlich [http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html QCalendarWidget] zu verwenden. Leider sind die Möglichkeiten dessen visuelle Darstellung zu beeinflussen stark begrenzt. | ||
Man kann diesem Problem begegnen, indem man eine neue Klasse von QCalendarWidget ableitet. An dieser Stelle wird ein Code-Schnipsel gezeigt, der die Vorgehensweise am Beispiel verdeutlicht. | Man kann diesem Problem begegnen, indem man eine neue Klasse von QCalendarWidget ableitet. An dieser Stelle wird ein Code-Schnipsel gezeigt, der die Vorgehensweise am Beispiel verdeutlicht. | ||
Wir wollen hier die Darstellung der Zellen, bzw. die Darstellung der angezeigten Tage, verändern. Dazu reimplementieren wir die protected Member-Function | Wir wollen hier die Darstellung der Zellen, bzw. die Darstellung der angezeigten Tage, verändern. Dazu reimplementieren wir die protected Member-Function [http://doc.qt.io/qt-5.0/qtwidgets/qcalendarwidget.html#paintCell paintCell] . | ||
'''Beispiel:''' | '''Beispiel:''' | ||
Line 31: | 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
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. |
Die visuelle Darstellung von QCalendarWidget verändern
Es gibt zahllose Wege einen Kalender zu erstellen. Der einfachste ist wahrscheinlich QCalendarWidget zu verwenden. Leider sind die Möglichkeiten dessen visuelle Darstellung zu beeinflussen stark begrenzt.
Man kann diesem Problem begegnen, indem man eine neue Klasse von QCalendarWidget ableitet. An dieser Stelle wird ein Code-Schnipsel gezeigt, der die Vorgehensweise am Beispiel verdeutlicht.
Wir wollen hier die Darstellung der Zellen, bzw. die Darstellung der angezeigten Tage, verändern. Dazu reimplementieren wir die protected Member-Function paintCell .
Beispiel:
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);
}
}
Das war's schon. Viel Spaß beim Programmieren!