Cómo dibujar esquinas redondeadas con QPainter::drawPolyLine

Estoy tratando de crear un widget de contenedor personalizado en este momento usando QGroupBox como base y dibujando el nuevo marco en el evento de pintura, que funciona bien usando drawPolyLine para crearlo, pero me gustaría dibujar el marco con redondeado esquinas ¿Alguien ha encontrado una forma de hacerlo con drawPolyLine o tendría que volver a escribir mi código para implementarlos?

preguntado el 12 de junio de 12 a las 15:06

void QPainter::drawRoundedRect(const QRectF& rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode)? -

No es un rectángulo completo, imagina un separador de carpetas para la forma. -

Como es irregular, puede crear formas complejas a partir de simples 'superponiéndolas' una encima de la otra usando QPainterPath. -

Debería poder hacer esto configurando un QPen con el joinStyle() apropiado. -

@ cbamber85: esa es una de las opciones, solo significa intercambiar QPen para 'borrar' la sección superior. -

2 Respuestas

Cuando se trata de formas flexibles personalizadas, QPainterPath es la clase más poderosa de todas. Podrías, por ejemplo, usar QPainterPath::arcTo() para dibujar esquinas redondeadas individuales, aunque pintar la forma completa puede requerir algunas matemáticas.

Otra posibilidad es definir formas individuales y fusionarlas usando intersected() or subtracted(), como ya sugirió cbamber85 en los comentarios.

Respondido el 12 de junio de 12 a las 15:06

Ah, no había visto el método intersectado, eso podría funcionar bastante bien. Esperaba poder obtener las esquinas redondeadas de forma gratuita, ¡pero lo solucionaré! - Nicolás Smith

QPen tiene una opción de "Estilo de gorra" de Qt::RoundCap que podría resultar en esquinas redondeadas dependiendo del ancho de la pluma.

respondido 02 mar '16, 17:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.