Mon environnement est CGAL 4.5 et QT5 sous Ubuntu 14.04. J'apprenais à utiliser le Qt interface de CGAL pour rendre des objets géométriques comme des points, des lignes, des segments. Il ne semble pas y avoir d'exemples d'utilisation de ce cadre en ligne, donc je me bats pour le moment. Je n'arrive pas à faire fonctionner mon code de test. Il compile mais lance une erreur de segmentation.Comment appeler cette fonction d'interface QT du CGAL correctement?
Voici mon code de mon fichier MainWindow.cpp
dans mon application QTwidgets créée via QtCreator.
#include <iostream>
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Qt/PointsGraphicsItem.h>
#include <CGAL/Qt/SegmentsGraphicsItem.h>
#include <vector>
typedef CGAL::Simple_cartesian<double> Kernel;
typedef Kernel::Point_2 Point_2;
typedef Kernel::Segment_2 Segment_2;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
std::vector<Point_2> pts;
pts.push_back(Point_2(1,1));
pts.push_back(Point_2(10,10));
CGAL::Qt::PointsGraphicsItem< std::vector<Point_2> > graphical_points(&pts);
}
La dernière ligne semble être la ligne de problème. Mon code continue de lancer une erreur de segmentation à ce stade. Le message étant
The inferior stopped because it received a signal from the operating system.
Signal name : SIGSEGV
Signal meaning : Segmentation fault
Qu'est-ce que je fais de mal dans cet appel de fonction? Je sais que je dois ajouter les points à la scène graphique, mais ce n'est pas important pour le moment.
Idéalement, lorsque le code, s'exécute, il devrait afficher deux points, un à (1,1) et l'autre à (10,10) une fois que j'ajoute ces points à la scène.
Here est le lien vers le fichier complet PointsGraphicsItem.h
sur Pastebin.