2016-03-29 5 views
0

Ich bin neu in Qt und möchte mit Qt interaktive Geometrieprogramme mit CGAL erstellen. Ich möchte, dass der Benutzer mit der Maus Punkte eingibt, Segmente sagt und dann eine Taste drückt, um einen CGAL-Algorithmus zu erhalten, der an der Eingabe arbeitet.Interaktive Rendering von Punkten, Linien und Segmenten in Qt

Meine Umgebung ist CGAL 4.5, Qt 5.6 und QtCreator 3.6.1 auf eine Ubuntu 14.04 Maschine.

CGAL hat eingebaute Unterstützung für seine Objekte, die QtGraphicsViewFramework mit (http://doc.cgal.org/latest/GraphicsView/index.html)

Ich weiß nicht, gemacht werden, wie CGAL Objekte zu machen - Punkte, Linien, Strahlen, Polygone - auf eine Qt Fenster. Die Seite, mit der ich oben verlinkt habe, setzt Qt-Kenntnisse voraus, damit eine Anwendung funktioniert, und ist daher für einen Qt-Anfänger nicht hilfreich.

Bisher habe ich ein Qt Widgets-Anwendungsprojekt mit QtCreator erstellt. Von dem, was ich weiß, muss ich die mainwindow.ui Datei grafisch innerhalb von QtCreator ändern, indem ich verschiedene Arten von Widgets auf sie ziehe und ablege und dann Signale abbilde, die CGAL-Funktionen auf Slots des Zeichnungs-Canvas-Widgets aufrufen. (Ist das richtig? Ich bin wackelig auf den Signalen und Slots Mechanismus)

Meine Frage ist .... das Widget platziere ich auf das Fenster als Zeichnung Leinwand? Zwei relevante Widgets scheinen GraphicsView und OpenGL widgets unter dem DisplayWidgets-Menü zu sein. Aber wie benutze ich sie?

+0

Schauen Sie sich die Dokumentation für QPainter, beide Grafik Elemente und Widgets verwenden Sie es zum Zeichnen. Es ist auch Qt, nicht QT – dtech

Antwort

2

Ich habe keine CGAL Erfahrung, aber ich kann Ihnen einige Qt bezogene Hinweise geben:

  1. Verwenden Sie die QGraphicsView + QGraphicsScene.

    QGraphicsView view = new QGraphicsView(parentWindow); 
    view->setViewport(new QOpenGLWidget(view)); 
    
  2. zu zeichnen CGAL Objekte, die Sie verwenden, um entweder zur Verfügung gestellt Grafikelementklassen (CGAL::Qt::TriangulationGraphicsItem, CGAL::Qt::VoronoiGraphicsItem, ...) oder eine eigene von der ableiten: Wenn Sie möchten, können Sie OpenGL-Unterstützung wie diese ermöglichen CGAL::Qt::GraphicsItem. Verwenden Sie die Methode QGraphicsScene::addItem(), um der Szene ein Element hinzuzufügen.

  3. Zum Navigieren (Schwenken + Zoomen) der Ansicht bietet CGAL die Klasse CGAL::Qt::GraphicsViewNavigation. Dies ist, wie es zu benutzen:

    CGAL::Qt::GraphicsViewNavigation* navFilter = new CGAL::Qt::GraphicsViewNavigation(view); 
    view->viewport()->installEventFilter(navFilter);