xiongxiongchuan
12th August 2013, 16:08
i inherit form QGraphicsitem.but it dosen't show on my QGraphicsView,
#ifndef LINEITEM_H
#define LINEITEM_H
#include <QGraphicsItem.>
#include <QPen>
#include <QPainter>
class LineItem :public QGraphicsItem
{
public:
LineItem( QGraphicsItem * parent = 0);
LineItem( const QLineF & line, QGraphicsItem * parent = 0 );
LineItem( qreal x1, qreal y1, qreal x2, qreal y2, QGraphicsItem * parent = 0 );
~LineItem();
//
QLineF line ( ) const;
QPen getPen()const;
void setLine( const QLineF & line );
void setLine( qreal x1, qreal y1, qreal x2, qreal y2 );
void setPen( const QPen & pen );
QRectF boundingRect() const;
void QGraphicsItem::paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 );
QPainterPath shape () const ;
private:
QPointF startPoint;
QPointF centerPoint;
QPointF endPoint;
QPen pen;
};
#endif // LINEITEM_H
#include "LineItem.h"
LineItem::LineItem( QGraphicsItem * parent)
: QGraphicsItem( parent)
{
}
LineItem::LineItem( const QLineF & line, QGraphicsItem * parent ):QGraphicsItem(parent)
{
startPoint=line.p1();
endPoint=line.p2();
centerPoint=QPointF((startPoint.x()+endPoint.y())/2,(startPoint.y()+endPoint.y())/2);
pen=QPen(Qt::black);
}
LineItem::LineItem( qreal x1, qreal y1, qreal x2, qreal y2, QGraphicsItem * parent /* = 0 */ ):QGraphicsItem(parent)
{
startPoint=QPointF(x1,y1);
endPoint=QPointF(x2,y2);
centerPoint=QPointF((x1+x2)/2,(y1+y2)/2);
}
LineItem::~LineItem()
{
}
QRectF LineItem::boundingRect() const
{
return QRectF(startPoint,endPoint);
}
QPainterPath LineItem::shape() const
{
QPainterPath path;
path.addRect(QRectF(startPoint,endPoint));
return path;
}
QPen LineItem::getPen() const
{
return pen;
}
void LineItem::setPen( const QPen & pen )
{
this->pen=pen;
}
void LineItem::setLine( const QLineF & line )
{
startPoint=line.p1();
endPoint=line.p2();
centerPoint=QPointF((startPoint.x()+endPoint.y())/2,(startPoint.y()+endPoint.y())/2);
}
void LineItem::setLine( qreal x1, qreal y1, qreal x2, qreal y2 )
{
startPoint=QPointF(x1,y1);
endPoint=QPointF(x2,y2);
}
void LineItem::paint( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget /* = 0 */ )
{
/*painter->setPen(QPen(Qt::green, 3, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin));
painter->drawRect(startPoint.x()-2,startPoint.y(),4,4);*/
//painter->drawPoint(startPoint);
//painter->drawPoint(endPoint);
//painter->drawPoint(centerPoint);
painter->setPen(Qt::blue);
painter->setFont(QFont("Arial", 30));
painter->drawText(QRectF(startPoint,endPoint), Qt::AlignCenter, "Qt");
}
#ifndef LINEITEM_H
#define LINEITEM_H
#include <QGraphicsItem.>
#include <QPen>
#include <QPainter>
class LineItem :public QGraphicsItem
{
public:
LineItem( QGraphicsItem * parent = 0);
LineItem( const QLineF & line, QGraphicsItem * parent = 0 );
LineItem( qreal x1, qreal y1, qreal x2, qreal y2, QGraphicsItem * parent = 0 );
~LineItem();
//
QLineF line ( ) const;
QPen getPen()const;
void setLine( const QLineF & line );
void setLine( qreal x1, qreal y1, qreal x2, qreal y2 );
void setPen( const QPen & pen );
QRectF boundingRect() const;
void QGraphicsItem::paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 );
QPainterPath shape () const ;
private:
QPointF startPoint;
QPointF centerPoint;
QPointF endPoint;
QPen pen;
};
#endif // LINEITEM_H
#include "LineItem.h"
LineItem::LineItem( QGraphicsItem * parent)
: QGraphicsItem( parent)
{
}
LineItem::LineItem( const QLineF & line, QGraphicsItem * parent ):QGraphicsItem(parent)
{
startPoint=line.p1();
endPoint=line.p2();
centerPoint=QPointF((startPoint.x()+endPoint.y())/2,(startPoint.y()+endPoint.y())/2);
pen=QPen(Qt::black);
}
LineItem::LineItem( qreal x1, qreal y1, qreal x2, qreal y2, QGraphicsItem * parent /* = 0 */ ):QGraphicsItem(parent)
{
startPoint=QPointF(x1,y1);
endPoint=QPointF(x2,y2);
centerPoint=QPointF((x1+x2)/2,(y1+y2)/2);
}
LineItem::~LineItem()
{
}
QRectF LineItem::boundingRect() const
{
return QRectF(startPoint,endPoint);
}
QPainterPath LineItem::shape() const
{
QPainterPath path;
path.addRect(QRectF(startPoint,endPoint));
return path;
}
QPen LineItem::getPen() const
{
return pen;
}
void LineItem::setPen( const QPen & pen )
{
this->pen=pen;
}
void LineItem::setLine( const QLineF & line )
{
startPoint=line.p1();
endPoint=line.p2();
centerPoint=QPointF((startPoint.x()+endPoint.y())/2,(startPoint.y()+endPoint.y())/2);
}
void LineItem::setLine( qreal x1, qreal y1, qreal x2, qreal y2 )
{
startPoint=QPointF(x1,y1);
endPoint=QPointF(x2,y2);
}
void LineItem::paint( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget /* = 0 */ )
{
/*painter->setPen(QPen(Qt::green, 3, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin));
painter->drawRect(startPoint.x()-2,startPoint.y(),4,4);*/
//painter->drawPoint(startPoint);
//painter->drawPoint(endPoint);
//painter->drawPoint(centerPoint);
painter->setPen(Qt::blue);
painter->setFont(QFont("Arial", 30));
painter->drawText(QRectF(startPoint,endPoint), Qt::AlignCenter, "Qt");
}