Zeichnen einer Linie auf einem QWidget

Ich versuche ein widget zu erstellen, das aus einer einzigen horizontalen schwarzen Linie. Dieses widget platziert werden soll in einem QGridLayout solche, die es dauert, bis die gesamte Zeile, also handeln als Trennzeichen. Als widget, auf dem das layout installiert ist, geändert wird, möchte ich die Zeile so ändern Sie die Größe zu halten. Ich habe überprüft eine Reihe von Optionen, einschließlich der QLine, QGraphicsView und QImage, aber ich kann nicht scheinen, um die Linie gezeichnet ist, geschweige denn es zu ändern.

Ich bin der Implementierung dieser in seiner eigenen Klasse, so kann ich es wiederverwenden, wie und Wann Sie gebraucht wird. Kann jemand mir bitte helfen mit diesem?

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

In diesem Fall parent ist die übergeordneteQWidget auf denen die QGridLayout bereits erwähnt ist installiert.

#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
  • können Sie uns ein screenshot von dem, was es sieht aus wie bisher? AFAIK, ich glaube nicht, dass Sie machen können ein widget nehmen Sie mehrere Standorte in einem QGridLayout, ein besserer Ansatz sein könnte, um eine horizontale Zeile und in jede Spalte (gleiche Zeile)
  • Haben Sie versucht, mit einer QFrame mit der Rahmenform festgelegt HLine?
  • das ist genau das was ich gesucht habe, vielen Dank 🙂 Wenn Sie es schreiben als eine Antwort, ich werde weitermachen und akzeptieren.
InformationsquelleAutor | 2012-06-19
Schreibe einen Kommentar