Estoy intentando crear un widget que consta de una sola línea negra horizontal. Este widget se colocará en un QGridLayout de modo que ocupe toda la fila, actuando así como un separador. A medida que el widget sobre el que está instalado el diseño se redimensiona, me gustaría que la línea cambie su tamaño para mantener el ritmo. He comprobado una serie de opciones, incluidas QLine, QGraphicsView y QImage, pero parece que no puedo trazar la línea, no importa que cambie de tamaño.Trazar una línea en un QWidget
Estoy implementando esto en su propia clase para que pueda reutilizarlo cuando sea necesario. ¿Puede alguien ayudarme con esto?
#include "startMenuSectionFooter.h"
#include <QtGui>
StartMenuSectionFooter::StartMenuSectionFooter(QWidget *parent)
: QWidget(parent)
{
layout = new QHBoxLayout(this);
}
void StartMenuSectionFooter::paintEvent(QPainEvent *e)
{
QPointF p1 = QPointF(parentWidget()->height(), 0);
QPointF p2 = QPointF(parentWidget()->height(), parentWidget()->width());
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::black, 10));
painter.drawLine(p1, p2);
}
En este caso, es el padre parent
QWidget
sobre la que se instala el QGridLayout
se mencionó anteriormente.
#ifndef START_MENU_SECTION_FOOTER_H
#define START_MENU_SECTION_FOOTER_H
#include <QWidget>
class QHBoxLayout;
class QPainEvent;
class StartMenuSectionFooter : public QWidget
{
Q_OBJECT
QBHoxLayout *layout;
void paintEvent(QPainEvent *e);
public:
StartMenuSectionFooter(QWidget *parent = NULL);
};
#endif
¿Puede mostrarnos una captura de pantalla de lo que parece hasta ahora? AFAIK, no creo que pueda hacer que un widget ocupe varias ubicaciones en un QGridLayout, un mejor enfoque podría ser hacer una línea horizontal y ponerla en cada columna (misma fila) – eqzx
¿Ha intentado utilizar un QFrame con el marco? forma establecida en HLine? –
@RA, eso es exactamente lo que estaba buscando, gracias :) Si lo escribe como respuesta, lo aceptaré. –