在 QGraphicsGridLayout 中从 QWidgets 中删除边框

Removing borders from QWidgets in a QGraphicsGridLayout

本文关键字:删除 边框 QWidgets QGraphicsGridLayout 中从      更新时间:2023-10-16

我目前有一个QGraphicsScene,我正在使用QGraphicsGridLayout。我正在尝试在此网格布局上对齐QWidgets(QLabels和自定义图形QWidget),然后将其导出到QPrinter以进行pdf导出。

我遇到的问题是我在 QLabels 之间有这些灰色分隔线,我似乎无法摆脱。我尝试将布局中的间距设置为 0、边距设置为 0、QLabel 调色板的所有不同属性等都无济于事。以下是相关代码:

主类:

QLabel lbl("some text");
lbl.setAutoFillBackground(true);
QPalette pal = lbl.palette();
pal.setColor(QPalette::Window, Qt::white);
lbl.setPalette(pal);
lbl.setFrameStyle(QFrame::NoFrame);
reportlayout->addWidget(&lbl);
reportlayout->generatePDF(reportfilename);

报表布局类:

gridlayout->setContentsMargins(0,0,0,0);
gridlayout->setSpacing(0);
QGraphicsWidget* page = new QGraphicsWidget();
page->setLayout(gridlayout);
scene->addItem(page);
printer->setOutputFileName(filename);
painter->begin(printer);
scene->render(painter);
painter->end();

我有一种感觉,这是布局在这样做,因为线条位于网格中的单元格之间 - 但布局没有任何颜色属性,我找不到与分隔线有关的任何内容。

谢谢一堆!

你试过样式表吗?

例如

setStylesheet("QLabel { border:0px solid black; }");

您必须调查所有可能的选择器,直到找到哪个选择器引入边框。