J'ai créé un widget ballon pour mon application. Le problème est que la pointe du widget est en dents de scie, alors qu'est-ce que je fais mal?Qt ballon widget widget
void BalloonWidget::paintEvent(QPaintEvent *)
{
QVector<QPointF> vertices;
vertices << QPointF(0, 0)
<< QPointF(width(), 0)
<< QPointF(width(), height() * 0.8)
<< QPointF(width() * 0.60, height() * 0.8)
<< QPointF(width() * 0.5, height())
<< QPointF(width() * 0.40, height() * 0.8)
<< QPointF(0, height() * 0.8);
balloonPoly = QPolygonF(vertices);
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setRenderHint(QPainter::HighQualityAntialiasing, true);
painter.setBrush(QBrush(backgroundColor));
QRegion maskRegion(balloonPoly.toPolygon(), Qt::WindingFill);
painter.drawPolygon(balloonPoly);
setMask(maskRegion);
}
Vous avez raison, la dent n'est pas causée par l'antialiasing mais par défaut QWidget a une forme rectangulaire et je dois masquer la zone non couverte par le polygone pour obtenir une forme personnalisée. Sinon, j'ai un rectangle avec un polygone dessiné dedans. – RobRobRob