Mercurial > hg > orthanc-stone
diff Applications/Qt/QCairoWidget.h @ 277:a38465cc909f am-2
Qt: refresh ok + mouse interaction ok
author | am@osimis.io |
---|---|
date | Mon, 27 Aug 2018 14:41:49 +0200 |
parents | 5de5699ad570 |
children | 829163c6efc1 |
line wrap: on
line diff
--- a/Applications/Qt/QCairoWidget.h Mon Aug 27 12:21:52 2018 +0200 +++ b/Applications/Qt/QCairoWidget.h Mon Aug 27 14:41:49 2018 +0200 @@ -9,84 +9,45 @@ #include <memory> #include <cassert> -class QCairoWidget : public QWidget +class QCairoWidget : public QWidget, public OrthancStone::IViewport::IObserver { Q_OBJECT private: std::auto_ptr<QImage> image_; - OrthancStone::CairoSurface surface_; + OrthancStone::CairoSurface surface_; OrthancStone::BasicNativeApplicationContext* context_; - bool isMouseOver_; - int mouseOverX_; - int mouseOverY_; - bool updateNeeded_; - - std::auto_ptr<OrthancStone::IMouseTracker> mouseTracker_; - -// void UpdateMouseCoordinates(int x, -// int y); protected: - void paintEvent(QPaintEvent *event); + virtual void paintEvent(QPaintEvent *event); - void resizeEvent(QResizeEvent *event); + virtual void resizeEvent(QResizeEvent *event); -// void mouseMoveEvent(QMouseEvent *event); + virtual void mouseMoveEvent(QMouseEvent *event); -// void mousePressEvent(QMouseEvent *event); + virtual void mousePressEvent(QMouseEvent *event); -// void mouseReleaseEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); -// void wheelEvent(QWheelEvent *event); + virtual void wheelEvent(QWheelEvent *event); public: explicit QCairoWidget(QWidget *parent); virtual ~QCairoWidget(); - void SetContext(OrthancStone::BasicNativeApplicationContext& context) + void SetContext(OrthancStone::BasicNativeApplicationContext& context); + + virtual void OnViewportContentChanged(const OrthancStone::IViewport& /*sceneNotUsed*/) { - context_ = &context; + update(); // schedule a repaint (handled by Qt) + emit ContentChanged(); } -// void SetCentralWidget(OrthancStone::CairoWidget& widget) -// { -// centralWidget_ = &widget; -// } - -// void SetScene(OrthancStone::ICairoScene& scene); - -// bool HasScene() const -// { -// return scene_ != NULL; -// } +signals: -// OrthancStone::ICairoScene& GetScene() const -// { -// assert(HasScene()); -// return *scene_; -// } - -// virtual void SignalUpdatedScene(OrthancStone::ICairoScene& scene) -// { -// //printf("UPDATE NEEDED\n"); fflush(stdout); -// updateNeeded_ = true; -// } - -signals: -// void SliceChanged(int position); - -// void RangeChanged(unsigned int countSlices); - -// void PositionChanged(const QString& position); - -// void ContentChanged(); + void ContentChanged(); public slots: -// void SetDefaultView(); -// void Refresh(); - -// void SetSlice(int index); };