19
votes

All Qt Charts seem to have a margin and rounded corners.

Example image with red marked border

How to remove both?

I want the white area to fill the entire dialog. I cannot find any informations in the Qt documentations. I found a screenshot of one Example that does not have this spacing. But I cannot find the code that disables it.

My initialization code looks like this:

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();
2
Is the red part of the QChartView or part of the QChart? You could try either ui->pieChartView->setBackgroundBrush(Qt::white) or m_pieChart->setMargins(QMargins()). - G.M.
You should do something like this: m_pieChart->layout()->setContentsMargins(0, 0, 0, 0); - Devopia
@Devopia: m_pieChart is now chart in the example. Your code works! But i still have rounded borders. If you also know how to remove them, I would accept your answer (if you write one). - feedc0de
Sure :) something like: chart->setBackgroundRoundness(0); - Devopia
@Devopia you really should write an anser to this question. You solved my problem perfectly and I want to close this question (with an answer)! - feedc0de

2 Answers

29
votes

Devopia answerd the question in the comments!

In my example above I needed the following 2 lines of code to remove the red part completely:

chart->layout()->setContentsMargins(0, 0, 0, 0);
chart->setBackgroundRoundness(0);
3
votes

At Qt 5.11 this does not work because the layout() method const (inherited from QGraphicsWidget):

QGraphicsLayout *QGraphicsWidget::layout() const

Furthermore it is not possible to take a copy of this because QGraphicsLayout is a base class.

For me this works:

chart->setMargins(QMargins(0,0,0,0));