Рисование линии в QWidget

Я пытаюсь создать виджет, состоящий из одной горизонтальной черной линии. Этот виджет будет помещен в QGridLayout таким образом, что он будет занимать всю строку, действуя как разделитель. Поскольку размер виджета, на котором установлен макет, изменяется, я бы хотел, чтобы линия меняла свой размер, чтобы не отставать. Я проверил несколько вариантов, включая QLine, QGraphicsView и QImage, но я не могу нарисовать линию, не говоря уже о том, чтобы изменить ее размер.

Я реализую это в своем собственном классе, поэтому я могу повторно использовать его по мере необходимости. Кто-нибудь может помочь мне с этим?

#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 );
}

В этом случае parentявляется родительским QWidget, на котором установлен упомянутый ранее QGridLayout.

#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
9
задан 19 June 2012 в 19:17
поделиться