QT C++创建具有选择多个网格点功能的网格
问题描述:
我的大学我正在开发一个项目,在那里我需要创建一个显示温度与时间相比变化的板。因此我使用QT DataVisualization来展示它如何改变。其实我只需要2D可视化而不是3D可视化?是否有可能通过QT DataVisualization创建2D可视化?要知道,高度表示板块的温度如何,如果点低,则冷,如果网格点高,则板块很热。QT C++创建具有选择多个网格点功能的网格
我想要做的下一件事是创建一个工具,用于在可视化中选择多个网格点。我已经阅读了关于QTRubberBand的一些信息,但是它在相同的框架中工作吗?你有什么更好的想法,我应该使用哪个框架?
滑块移动时,必须可以升级可视化。
你对QDataVisualization工具的使用方法有什么建议吗?
在这里你可以看到一张图片,它的外观现在:提前
谢谢!
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().
}
感谢您的回答!是否可以像图片上显示的那样对图像着色? 如果我使用橡皮筋,我怎么知道,哪些点被选中,哪些没有被选中? – Blacktiger800