QT C++创建具有选择多个网格点功能的网格

问题描述:

我的大学我正在开发一个项目,在那里我需要创建一个显示温度与时间相比变化的板。因此我使用QT DataVisualization来展示它如何改变。其实我只需要2D可视化而不是3D可视化?是否有可能通过QT DataVisualization创建2D可视化?要知道,高度表示板块的温度如何,如果点低,则冷,如果网格点高,则板块很热。QT C++创建具有选择多个网格点功能的网格

我想要做的下一件事是创建一个工具,用于在可视化中选择多个网格点。我已经阅读了关于QTRubberBand的一些信息,但是它在相同的框架中工作吗?你有什么更好的想法,我应该使用哪个框架?

滑块移动时,必须可以升级可视化。

你对QDataVisualization工具的使用方法有什么建议吗?

在这里你可以看到一张图片,它的外观现在:提前

Visualization of the plate

谢谢!

Blacktiger800

如果我理解正确的话,你只需要选择点的能力的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(). 
} 
+0

感谢您的回答!是否可以像图片上显示的那样对图像着色? 如果我使用橡皮筋,我怎么知道,哪些点被选中,哪些没有被选中? – Blacktiger800