Cómo dibujar esquinas redondeadas con QPainter::drawPolyLine
Frecuentes
Visto 3,194 veces
3
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?
2 Respuestas
3
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
3
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 qt qpainter or haz tu propia pregunta.
void QPainter::drawRoundedRect(const QRectF& rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode)
? - cmannett85No es un rectángulo completo, imagina un separador de carpetas para la forma. - Nicholas Smith
Como es irregular, puede crear formas complejas a partir de simples 'superponiéndolas' una encima de la otra usando
QPainterPath
. - cmannett85Debería poder hacer esto configurando un QPen con el joinStyle() apropiado. - Dan Milburn
@ cbamber85: esa es una de las opciones, solo significa intercambiar QPen para 'borrar' la sección superior. - Nicholas Smith