У меня есть два виджета, которые имеют темный фон одного цвета.Эти виджеты находятся в соседних ячейках в пределах QGridLayout
, который имеет ContentsMargins
и интервал 0 со всех сторон.Я использую пользовательский класс QStyle
для рисования.
Если я не использую сглаживание, все выглядит как положено - фоны двух виджетов сливаются в одну непрерывную темную область.Включение сглаживания (через painter->setRenderHint(QPainter::Antialiasing, true);
) оставляет тонкую (1px) белую линию между этими двумя виджетами.
Можно ли как-то избавиться от этой линии?Отключить сглаживание вообще невозможно, поскольку эти два виджета имеют закругленные углы, и без них они выглядят плохо.
EDIT
Теперь я составил «минимальный» пример:
#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QPainter>
class foo : public QWidget
{
protected:
void paintEvent(QPaintEvent *) {
QPainter painter(this);
int x1, y1, x2, y2;
int radius = 20;
int diam = 2 * radius;
rect().getCoords(&x1, &y1, &x2, &y2);
QPainterPath path; // This will be a rounded rectangle.
path.moveTo(x1 + radius, y2);
path.lineTo(x2 - radius, y2);
path.arcTo(x2 - diam, y2 - diam, diam, diam, 270.0, 90.0);
path.lineTo(x2, y1 + radius);
path.arcTo(x2 - diam, y1, diam, diam, 0.0, 90.0);
path.lineTo(x1 + radius, y1);
path.arcTo (x1, y1, diam, diam, 90.0, 90.0);
path.lineTo(x1, y2 - radius);
path.arcTo (x1, y2 - diam, diam, diam, 180.0, 90.0);
path.closeSubpath();
painter.setPen(Qt::gray);
// Comment out the following line and the rounded rectangles
// will not have a thin boundary of background color between them
painter.setRenderHint(QPainter::Antialiasing, true);
painter.fillPath(path, Qt::gray);
painter.drawPath(path);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGridLayout *l = new QGridLayout;
l->setContentsMargins(0,0,0,0);
l->setSpacing(0);
foo *c1 = new foo;
foo *c2 = new foo;
l->addWidget(c1, 0, 0);
l->addWidget(c2, 0, 1);
QWidget *w = new QWidget;
w->setMinimumSize(500,250);
w->setLayout(l);
w->show();
return a.exec();
}
Я работаю над Ubuntu с Qt 4.7.3.