QChartView 中的 QScatterSeries 点

问题描述

使用以下代码,QScatterSeries 点在 QChartView 中显示,如图所示。

#include <QtCharts>
#include <QApplication>

using namespace QtCharts;
class ChartView : public QChartView
{
    Q_OBJECT
public:
    explicit ChartView(QWidget *parent = 0) : QChartView(parent) {

        QScatterSeries *scatterSeries = new QScatterSeries();
        scatterSeries->append(2170000.,700000.);
        scatterSeries->append(2180000.,710000.);
        scatterSeries->append(2190000.,720000.);

        scatterSeries->setName("Points");
        scatterSeries->setMarkerShape(QScatterSeries::MarkerShapeRectangle);
        scatterSeries->setMarkerSize(20.);

        chart()->addSeries(scatterSeries);
        chart()->createDefaultAxes();
    }
    virtual ~ChartView(){};
};

int main(int argc,char *argv[])
{
    QApplication a(argc,argv);
    ChartView w;
    w.show();
    return a.exec();
}

// to avoid "Undefined reference to 'vatable for ... '"
// according to https://stackoverflow.com/questions/3065154/undefined-reference-to-vtable
#include "main.moc"

QScatterSeries points in QChartView

但是,我想改进两个方面:

  1. 我希望所有标记都完整显示。如您所见,与中心的点标记相比,角上的点标记仅部分显示。我知道我可以手动使用 chart()->axes(Qt::Horizontal).first()->setRange(2169000.,2191000.); chart()->axes(Qt::Vertical).first()->setRange(699000.,721000.); 什么是自动方法?

  2. 我想在调整窗口大小时将 X、Y 纵横比保持为 1。我试过 chart()->setPlotArea(QRectF(50,50,400,400)); 之类的东西,但它弄乱了整个情节,甚至是背景颜色。

有人能指出我正确的方向吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...