如何从QChartView或QChart中删除边距

fee*_*0de 13 qt qtcharts

所有Qt图表似乎都有边距和圆角.

带红色标记边框的示例图像

如何删除?

我希望白色区域填满整个对话框.我在Qt文档中找不到任何信息.我找到了一个没有这个间距的示例的屏幕截图.但我找不到禁用它的代码.

我的初始化代码如下所示:

QPieSeries *series = new QPieSeries();
series->append("Jane", 1);
series->append("Joe", 2);
series->append("Andy", 3);
series->append("Barbara", 4);
series->append("Axel", 5);

QChart *chart = new QChart();
chart->addSeries(series);

QChartView *chartView = new QChartView(chart);
chartView->setBackgroundBrush(Qt::red);
chartView->setRenderHint(QPainter::Antialiasing);

QMainWindow window;
window.setCentralWidget(chartView);
window.resize(400, 300);
window.show();
Run Code Online (Sandbox Code Playgroud)

fee*_*0de 16

Devopia在评论中回答了这个问题!

在上面的例子中,我需要以下两行代码来完全删除红色部分:

chart->layout()->setContentsMargins(0, 0, 0, 0);
chart->setBackgroundRoundness(0);
Run Code Online (Sandbox Code Playgroud)


Ale*_*x44 5

在 Qt 5.11 中,这不起作用,因为该layout()方法const(继承自QGraphicsWidget):

QGraphicsLayout *QGraphicsWidget::layout() const
Run Code Online (Sandbox Code Playgroud)

此外,不可能获取它的副本,因为它QGraphicsLayout是基类。

对我来说这有效:

chart->setMargins(QMargins(0,0,0,0));
Run Code Online (Sandbox Code Playgroud)