首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT C++创建具有选择多个网格点的功能的网格

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

Stack Overflow用户
提问于 2017-08-26 14:45:31
回答 1查看 284关注 0票数 0

为了我的大学,我正在做一个项目,我需要创建一个图板来显示温度随时间的变化。因此,我使用QT DataVisualization来展示它是如何变化的。实际上我只需要它的2D可视化,而不是3D可视化?是否也可以使用QT DataVisualization创建2D可视化效果?对了,高度表示盘子有多热,如果点低,就是冷的,如果网格点高,就是热的。

我想做的下一件事是创建一个工具,用于在可视化上选择多个网格点。我读过一些关于QTRubberBand的文章,但是它能在相同的框架中工作吗?你有没有更好的主意,我应该使用哪个框架?

当滑块移动时,必须能够升级可视化。

你知道我如何使用QDataVisualization工具来做这件事吗?

在这里你可以看到一张图片,它现在看起来是什么样子:

Visualization of the plate

提前感谢!

Blacktiger800

EN

回答 1

Stack Overflow用户

发布于 2017-08-26 15:15:09

如果我没理解错的话,你只需要一个能够选择点的2D图?

代码语言:javascript
复制
QLineSeries *series = new QLineSeries();
// Fill it up with your data
Chart *chart = new Chart();
chart->addSeries(series);

然后,为了处理选择,您可以覆盖鼠标事件处理程序的QChartView。它可能实际上是你的子类化的图表,不确定这一点。

代码语言:javascript
复制
class ChartView : public QChartView

然后,您可以重写鼠标事件处理程序。

代码语言:javascript
复制
protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);

然后获取线序列数据,遍历它并获得位于您创建的边界框内的所有点(您可以使用鼠标事件自己创建它,如果您想渲染它,也可以使用QRubberBand创建它)。类似于下面的示例:http://doc.qt.io/qt-4.8/qrubberband.html

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45892694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档