【问题标题】:Qt. Add widgets to QChart, QChartviewQt。将小部件添加到 QChart、QChartview
【发布时间】:2019-10-10 09:02:12
【问题描述】:

目前,我正在编写一个使用 QChartView 和 QChart 绘制一些 2D 数据(样条线)的代码。我想在图形中添加一些图形对象,例如矩形甚至图像。这可能吗? QChart 中似乎没有像绘制矩形这样的方法。 我的代码如下所示:

QChartView *mainChart; 
QChart *chart; 
chart=new QChart(); 
series_x = new QSplineSeries; {...} chart->addSeries(series_x); 
mainChart->setChart(plot); setCentralWidget(mainChart)

最好的问候。

【问题讨论】:

  • 对不起,这里是代码:QChartView *mainChart; QChart *chart; chart=new QChart(); series_x = new QSplineSeries; {...} chart->addSeries(series_x); mainChart->setChart(plot); setCentralWidget(mainChart)

标签: widget add qchart qchartview


【解决方案1】:

好的....

经过大量研究,我找到了 QGraphicsView 和 QGraphicsScene。这允许添加重叠的小部件。不过,现在我在调整主窗口大小时正在为 QChart 的大小而苦苦挣扎。此外,我发现无法将图表的大小与我正在绘制的主窗口部分相匹配。我尝试了 setMinimumSize, mainwindow->size 之类的东西,但它从来没有出现在它应该在的地方。

当然还有:图表的坐标系与场景坐标不同。问题是,我想将图形对象与图表中的坐标相关联。

有什么建议吗?

感谢和欢呼 安吉丽娜

【讨论】:

    【解决方案2】:

    您应该尝试使用 QWidget 类中的 resizeEvent() 方法,您可以直接从 QMainWindow 对象中使用该方法。

    例如,如果您从 QMainWindow 继承的类称为 PersonalWindow,您将拥有:

    PersonalWindow.h

    void resizeEvent(QResizeEvent* event) override;

    PersonalWindow.cpp

    void PersonalWindow::resizeEvent(QResizeEvent* event) {
        //
        //  Your own code here.
        //
    
        //
        QMainWindow::resizeEvent(event);
    }
    

    在这种方法中,您可以获得一个成员变量,它是您的窗口的当前大小,并将其设置回您的图表。

    【讨论】: