QT中如何绘制点?
我正在用 QT 用 C++ 编写一个应用程序,其中有 n 个点并计算其凸包。然而,一旦计算出来,我不知道如何绘制点并绘制船体的边界。制作菜单按钮等很简单,但我不确定我是否知道执行此操作的工具。
你如何做到这一点?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我正在用 QT 用 C++ 编写一个应用程序,其中有 n 个点并计算其凸包。然而,一旦计算出来,我不知道如何绘制点并绘制船体的边界。制作菜单按钮等很简单,但我不确定我是否知道执行此操作的工具。
你如何做到这一点?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
图形视图,
addEllipse
QGraphicsView
可以很好地进行 2D 绘图,并为您提供了许多如何显示它的选项。它不像 qwt 那样适合绘制科学数据,而只是为了显示一堆点、几何图形或动画以及许多其他东西而工作得很好。请参阅 Qt 的图形视图框架文档和示例。以下是如何在 QGraphicsScene 中绘制一堆点并将其显示在 QGraphicsView 中。
注意:您可能需要在视图上调用
setSceneRect
,否则场景将自动居中。阅读 Qt 文档中对QGraphicsScene
和QGraphicsView
的描述。您可以缩放视图以显示更多或更少的场景,并且可以放入滚动条。我回答了相关的 问题,我将在其中详细介绍您可以使用QGraphicsView
执行哪些操作您可能还想看看。Graphics View,
addEllipse
QGraphicsView
does 2D plotting very well and gives you many options for how to display it. It isn't as tailored for plotting scientific data as much asqwt
, but just for showing a bunch of points, or geometry or animations and lots of other things it works very well. See Qt's Graphics View Framework documentation and examples.Here is how you plot a bunch of points in a
QGraphicsScene
and show it in aQGraphicsView
.Note: You will probably want to call
setSceneRect
on your view, otherwise the scene will just auto-center it. Read the descriptions forQGraphicsScene
andQGraphicsView
in the Qt Documentation. You can scale the view to show more or less of the scene and it can put scroll bars in. I answered a related question where I show more about what you can do with aQGraphicsView
that you may want to look at also.您只需创建一个派生自
QWidget
的自定义类,并在其中重写void PaintEvent(QPaintEvent* event)
方法。您可以将点放入某种点列表中,即std::vector
或QList
,然后使用 Polyline 方法绘制它。例如:You can just create a custom class deriving from
QWidget
where you override thevoid paintEvent(QPaintEvent* event)
method. In that you put the points into some sort of point list, eitherstd::vector<QPoint>
orQList<QPoint>
and then paint it with a Polyline method. For instance:有一个图表库 qwt,它提供 Qt 小部件用于 - 呃 - 图表目的。
There is a charting library, qwt, that provides Qt widgets for - erm - charting purposes.
Qt Charts、QML 或 GraphicsView
这将是我的 QGraphics View 示例的更新,但它有点长,而且它确实是回答问题的完全不同的方法。
Qt Charts(自 2016 年起提供 LGPL)是无需第三方库即可实现此目的的好方法。
https://doc.qt.io/qt-5/qlineseries.html#QLineSeries
对于凸包具体示例,您可能想要
QAreaSeries
图表。https://doc.qt.io/qt-5/qtcharts- areachart-example.html
https://doc.qt.io/qt-5/qareaseries.html
希望有帮助。
Qt Charts, QML or GraphicsView
This was going to be an update to my QGraphics View example, but it got kind of long, and it really is a completely different method to answer the question.
Qt Charts (LGPL available since 2016) is a great way to do this without needing a third party library.
https://doc.qt.io/qt-5/qlineseries.html#QLineSeries
For the convex hull example specifically, you probably want the
QAreaSeries
chart.https://doc.qt.io/qt-5/qtcharts-areachart-example.html
https://doc.qt.io/qt-5/qareaseries.html
Hope that helps.