【问题标题】:How to remove margin from QChartView or QChart如何从 QChartView 或 QChart 中删除保证金
【发布时间】:2017-01-01 22:59:28
【问题描述】:

所有Qt Charts 似乎都有边距和圆角。

如何同时删除?

我希望白色区域填满整个对话框。我在 Qt 文档中找不到任何信息。我发现one Example 的截图没有这个间距。但是我找不到禁用它的代码。

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

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();

【问题讨论】:

  • QChartView的红色部分还是QChart的一部分?您可以尝试ui->pieChartView->setBackgroundBrush(Qt::white)m_pieChart->setMargins(QMargins())
  • 你应该这样做:m_pieChart->layout()->setContentsMargins(0, 0, 0, 0);
  • @Devopia: m_pieChart 在示例中现在是 chart。您的代码有效!但我仍然有圆形边框。如果您也知道如何删除它们,我会接受您的回答(如果您写一个)。
  • 当然 :) 类似:chart->setBackgroundRoundness(0);
  • @Devopia 你真的应该为这个问题写一个分析器。你完美地解决了我的问题,我想结束这个问题(有答案)!

标签: qt qtcharts


【解决方案1】:

Devopia回答了cmets中的问题!

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

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

【讨论】:

  • 我曾经做各种绕道和弯路来摆脱那个边缘。不错!
  • 我还成功地使用chart->setMargins({0, 0, 0, 0}); 删除了图表周围的一些额外空间。
  • 在 QML 中不起作用:stackoverflow.com/a/60357846/630169
【解决方案2】:

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

QGraphicsLayout *QGraphicsWidget::layout() const

此外,由于QGraphicsLayout 是一个基类,因此无法复制它。

对我来说这是可行的:

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

【讨论】:

  • 既然 layout() 方法返回一个指向非 const QGraphicsLayout 的指针,为什么会成为一个问题?此外,chart->setMargins()chart->layout()->setContentsMargins() 并不完全相同。用 CSS 术语来说,前者设置图表的填充,而后者设置其边距。
  • chart->layout()->setContentsMargins(0, 0, 0, 0); 行与 Qt 5 配合得很好。此外,Joseph Artsimovich 完美地描述了您肯定遇到的问题。
  • 这是不对的。 1)那个方法是const意味着它不会修改QGraphicsWidget;但是返回的布局本身不是const,你可以用它做任何你想做的事情,并且2)setMargins将边距设置为inside圆角边框; layout()->setContentsMargins 是该边框外到小部件边缘的边距;它们并不完全相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多