QQuickPaintedItem can be used to draw using the QPainter API.
In the code below, I tried to wrap a QCalendarWidget in a QQuickPaintedItem . It correctly displays, but does not handle input events:
.hour:
class CalendarControl : public QQuickPaintedItem { Q_OBJECT public: explicit CalendarControl(QQuickItem *parent = 0); virtual ~CalendarControl(); void paint(QPainter *painter); … protected: QCalendarWidget *calendar_; }
.cpp:
CalendarControl::CalendarControl(QQuickItem *parent) : QQuickPaintedItem(parent) , calendar_(NULL) { setOpaquePainting(true); setAcceptHoverEvents(true); setAcceptedMouseButtons(Qt::AllButtons); calendar_ = new QCalendarWidget;
To catch mouse events, override
void hoverEnterEvent(QHoverEvent *event); void hoverLeaveEvent(QHoverEvent *event); void hoverMoveEvent(QHoverEvent *event); void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void mouseDoubleClickEvent(QMouseEvent *event); void wheelEvent(QWheelEvent *event);
I could not pass them to QCalendarWidget although it ignores them. But when you create a wrapper for a custom QWidget you can probably pass these events directly to it.
source share