为了我的大学,我正在做一个项目,我需要创建一个图板来显示温度随时间的变化。因此,我使用QT DataVisualization来展示它是如何变化的。实际上我只需要它的2D可视化,而不是3D可视化?是否也可以使用QT DataVisualization创建2D可视化效果?对了,高度表示盘子有多热,如果点低,就是冷的,如果网格点高,就是热的。
我想做的下一件事是创建一个工具,用于在可视化上选择多个网格点。我读过一些关于QTRubberBand的文章,但是它能在相同的框架中工作吗?你有没有更好的主意,我应该使用哪个框架?
当滑块移动时,必须能够升级可视化。
你知道我如何使用QDataVisualization工具来做这件事吗?
在这里你可以看到一张图片,它现在看起来是什么样子:
提前感谢!
Blacktiger800
发布于 2017-08-26 15:15:09
如果我没理解错的话,你只需要一个能够选择点的2D图?
QLineSeries *series = new QLineSeries();
// Fill it up with your data
Chart *chart = new Chart();
chart->addSeries(series);然后,为了处理选择,您可以覆盖鼠标事件处理程序的QChartView。它可能实际上是你的子类化的图表,不确定这一点。
class ChartView : public QChartView然后,您可以重写鼠标事件处理程序。
protected:
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);然后获取线序列数据,遍历它并获得位于您创建的边界框内的所有点(您可以使用鼠标事件自己创建它,如果您想渲染它,也可以使用QRubberBand创建它)。类似于下面的示例:http://doc.qt.io/qt-4.8/qrubberband.html
void Widget::mousePressEvent(QMouseEvent *event)
{
origin = event->pos();
if (!rubberBand)
rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
rubberBand->setGeometry(QRect(origin, QSize()));
rubberBand->show();
}
void Widget::mouseMoveEvent(QMouseEvent *event)
{
rubberBand->setGeometry(QRect(origin, event->pos()).normalized());
}
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
rubberBand->hide();
// determine selection, for example using QRect::intersects()
// and QRect::contains().
}https://stackoverflow.com/questions/45892694
复制相似问题