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);
 };