単一の水平の黒い線で構成されるウィジェットを作成しようとしています。このウィジェットは、行全体を占めるように 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