在QChart上画点

时间:2019-02-20 00:28:31

标签: c++ qt qt5 qchart

我试图画一个点,单击QChart。为此,我创建了一个“ ChartWidget”类,该类继承了QChart并覆盖了以下paint方法:

void ChartWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    QtCharts::QChart::paint(painter, option, widget);

    if (_pointToDraw != nullptr)
    {
        std::cout << "Drawing point" << std::endl;

        QPen pen;

        pen.setColor(QColor(255, 0, 0, 255));
        pen.setWidth(3);

        painter->setPen(pen);
        painter->drawPoint(*_pointToDraw);

        delete _pointToDraw;
        _pointToDraw = nullptr;
    }
}

void ChartWidget::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
    std::cout << "Clicked at " << event->pos().x() << "/" << event->pos().y() << std::endl;

    _pointToDraw = new QPointF(event->pos());

    update();
}

似乎已画出了点,但在图表的后面,因为只有在单击图表的外部时,我才能看到它,如此屏幕截图所示:

Screenshot

如果我单击图表的中间位置,则看不到任何内容。

关于我在做什么错以及如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

正如您指出的那样,QChart仅绘制背景,QChart的主要功能是将图形的配置保存为主题,图表类型等。因此您无法显示该按钮。解决方法是创建QGraphicsEllipseItem:

Option