Je souhaite définir des coins arrondis sur un QDialog. Comme il est une fenêtre de niveau supérieur, rayon de frontière ne fonctionne pas, donc je l'ai à faire:Coin arrondi non pixélisé pour la fenêtre de niveau supérieur
QRegion EnterPinDialog::roundedRect(const QRect& rect, int r)
{
QRegion region;
// middle and borders
region += rect.adjusted(r, 0, -r, 0);
region += rect.adjusted(0, r, 0, -r);
// top left
QRect corner(rect.topLeft(), QSize(r*2, r*2));
region += QRegion(corner, QRegion::Ellipse);
// top right
corner.moveTopRight(rect.topRight());
region += QRegion(corner, QRegion::Ellipse);
// bottom left
corner.moveBottomLeft(rect.bottomLeft());
region += QRegion(corner, QRegion::Ellipse);
// bottom right
corner.moveBottomRight(rect.bottomRight());
region += QRegion(corner, QRegion::Ellipse);
return region;
}
et je l'appelle ainsi:
this->setMask(roundedRect(this->rect(), 8));
Il fonctionne, mais le problème est que les coins sont pixellisés.
Y at-il un moyen de l'obtenir sans avoir ces coins pixellisés? Si oui, comment?
Je ne suis pas d'accord avec Harald Scherirch. Voir [Qt Bug 3499] (https://bugreports.qt.nokia.com/browse/QTBUG-3499?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel) sur le système de suivi des bogues Qt –
https://bugreports.qt-project.org/browse/QTBUG-3499 – Trilarion