Qt交互渲染点、线、线段
Rendering points, lines, segments interactively in Qt
我是 Qt 的新手,我想使用 Qt 使用 CGAL 制作交互式几何程序。我希望用户使用鼠标输入点、线段,然后按下按钮让 CGAL 算法处理输入。
我的环境是 CGAL 4.5、Qt 5.6 和 QtCreator 3.6.1 Ubuntu 14.04机器.
CGAL 内置了对其对象的支持
使用 QtGraphicsViewFramework 呈现 (http://doc.cgal.org/latest/GraphicsView/index.html )
我不知道如何将 CGAL 对象——点、线、射线、多边形——渲染到 Qt 上 window。我在上面链接到的页面假定您了解 Qt 才能使应用程序正常工作,因此对 Qt 初学者没有帮助。
到目前为止,我已经使用QtCreator 创建了一个Qt widgets 应用程序项目。据我所知,我需要通过将不同类型的小部件拖放到 QtCreator 中以图形方式修改 mainwindow.ui
文件,然后将调用 CGAL 函数的信号映射到任何绘图 canvas 小部件的插槽上. (这是正确的吗?我对信号和槽机制犹豫不决)
我的问题是..我应该把哪个小部件作为绘图放在window上canvas?两个相关的小部件似乎是 GraphicsView
和 OpenGL widgets
在 DisplayWidgets 菜单下。但是我该如何使用它们呢?
我没有CGAL经验,但我可以给你一些Qt相关的提示:
使用QGraphicsView
+QGraphicsScene
。如果需要,您可以像这样启用 OpenGL 支持:
QGraphicsView view = new QGraphicsView(parentWindow);
view->setViewport(new QOpenGLWidget(view));
要绘制 CGAL 对象,您必须使用提供的 图形项 classes(CGAL::Qt::TriangulationGraphicsItem
、CGAL::Qt::VoronoiGraphicsItem
, ...) 或从 CGAL::Qt::GraphicsItem
派生您自己的。要将项目添加到场景,请使用 QGraphicsScene::addItem()
方法。
为了导航(平移 + 缩放)视图,CGAL 提供了 CGAL::Qt::GraphicsViewNavigation
class。这是如何使用它:
CGAL::Qt::GraphicsViewNavigation* navFilter = new CGAL::Qt::GraphicsViewNavigation(view);
view->viewport()->installEventFilter(navFilter);
我是 Qt 的新手,我想使用 Qt 使用 CGAL 制作交互式几何程序。我希望用户使用鼠标输入点、线段,然后按下按钮让 CGAL 算法处理输入。
我的环境是 CGAL 4.5、Qt 5.6 和 QtCreator 3.6.1 Ubuntu 14.04机器.
CGAL 内置了对其对象的支持 使用 QtGraphicsViewFramework 呈现 (http://doc.cgal.org/latest/GraphicsView/index.html )
我不知道如何将 CGAL 对象——点、线、射线、多边形——渲染到 Qt 上 window。我在上面链接到的页面假定您了解 Qt 才能使应用程序正常工作,因此对 Qt 初学者没有帮助。
到目前为止,我已经使用QtCreator 创建了一个Qt widgets 应用程序项目。据我所知,我需要通过将不同类型的小部件拖放到 QtCreator 中以图形方式修改 mainwindow.ui
文件,然后将调用 CGAL 函数的信号映射到任何绘图 canvas 小部件的插槽上. (这是正确的吗?我对信号和槽机制犹豫不决)
我的问题是..我应该把哪个小部件作为绘图放在window上canvas?两个相关的小部件似乎是 GraphicsView
和 OpenGL widgets
在 DisplayWidgets 菜单下。但是我该如何使用它们呢?
我没有CGAL经验,但我可以给你一些Qt相关的提示:
使用
QGraphicsView
+QGraphicsScene
。如果需要,您可以像这样启用 OpenGL 支持:QGraphicsView view = new QGraphicsView(parentWindow); view->setViewport(new QOpenGLWidget(view));
要绘制 CGAL 对象,您必须使用提供的 图形项 classes(
CGAL::Qt::TriangulationGraphicsItem
、CGAL::Qt::VoronoiGraphicsItem
, ...) 或从CGAL::Qt::GraphicsItem
派生您自己的。要将项目添加到场景,请使用QGraphicsScene::addItem()
方法。为了导航(平移 + 缩放)视图,CGAL 提供了
CGAL::Qt::GraphicsViewNavigation
class。这是如何使用它:CGAL::Qt::GraphicsViewNavigation* navFilter = new CGAL::Qt::GraphicsViewNavigation(view); view->viewport()->installEventFilter(navFilter);