Paint the connection text, boxes separately.

This commit is contained in:
dfighter1985 2014-09-13 21:34:47 +02:00
parent f170d8854b
commit cf42655519
4 changed files with 60 additions and 4 deletions

View file

@ -38,8 +38,6 @@ QWidget( parent )
m_scene = new QGraphicsScene( this ); m_scene = new QGraphicsScene( this );
m_ui.view->setScene( m_scene ); m_ui.view->setScene( m_scene );
m_scene->addSimpleText( "Hello" );
connect( m_scene, SIGNAL( selectionChanged() ), this, SLOT( onSelectionChanged() ) ); connect( m_scene, SIGNAL( selectionChanged() ), this, SLOT( onSelectionChanged() ) );
} }

View file

@ -58,7 +58,10 @@ void ExpressionLink::nodeMoved()
void ExpressionLink::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget ) void ExpressionLink::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget )
{ {
setPen( QPen( Qt::black ) ); QPen p;
p.setColor( Qt::black );
p.setWidth( 5 );
setPen( p );
QGraphicsLineItem::paint( painter, option, widget ); QGraphicsLineItem::paint( painter, option, widget );
} }

View file

@ -40,6 +40,7 @@ QRectF ExpressionNode::boundingRect() const
void ExpressionNode::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget ) void ExpressionNode::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget )
{ {
QBrush br; QBrush br;
QBrush boxBrush;
QPen p; QPen p;
QColor c; QColor c;
@ -62,7 +63,6 @@ void ExpressionNode::paint( QPainter *painter, const QStyleOptionGraphicsItem *o
painter->setPen( p ); painter->setPen( p );
painter->drawText( header, Qt::AlignCenter, "Something" ); painter->drawText( header, Qt::AlignCenter, "Something" );
if( option->state & QStyle::State_Selected ) if( option->state & QStyle::State_Selected )
{ {
p.setStyle( Qt::DotLine ); p.setStyle( Qt::DotLine );
@ -73,6 +73,8 @@ void ExpressionNode::paint( QPainter *painter, const QStyleOptionGraphicsItem *o
painter->setPen( p ); painter->setPen( p );
painter->drawRect( rect ); painter->drawRect( rect );
painter->drawRect( header ); painter->drawRect( header );
paintConnections( painter );
} }
@ -84,4 +86,55 @@ void ExpressionNode::mouseMoveEvent( QGraphicsSceneMouseEvent *e )
QGraphicsItem::mouseMoveEvent( e ); QGraphicsItem::mouseMoveEvent( e );
} }
void ExpressionNode::paintConnections( QPainter *painter )
{
QRectF rect = boundingRect();
QBrush boxBrush;
QPen p;
boxBrush.setColor( Qt::black );
boxBrush.setStyle( Qt::SolidPattern );
p.setColor( Qt::black );
QRectF box = rect;
QRectF tbox = rect;
qreal wh = 10.0;
qreal tw = 25.0;
qreal th = 12.0;
box.setTopLeft( QPoint( 0, rect.height() * 0.5 ) );
box.setHeight( wh );
box.setWidth( wh );
painter->fillRect( box, boxBrush );
tbox.setTopLeft( QPoint( 15, rect.height() * 0.50 ) );
tbox.setHeight( th );
tbox.setWidth( tw );
painter->setPen( p );
painter->drawText( tbox, Qt::AlignCenter, "Out" );
for( int i = 0; i < 3; i++ )
{
qreal x = rect.width() - wh;
qreal y = 30 + i * 20;
qreal tx = x - 5 - tw;
qreal ty = y - 2;
box.setTopLeft( QPoint( x, y ) );
box.setHeight( wh );
box.setWidth( wh );
painter->fillRect( box, boxBrush );
tbox.setTopLeft( QPoint( tx, ty ) );
tbox.setHeight( th );
tbox.setWidth( tw );
QString text = 'A' + i;
painter->drawText( tbox, Qt::AlignRight, text );
}
}

View file

@ -40,6 +40,8 @@ protected:
void mouseMoveEvent( QGraphicsSceneMouseEvent *e ); void mouseMoveEvent( QGraphicsSceneMouseEvent *e );
private: private:
void paintConnections( QPainter *painter );
ExpressionLink *m_link; ExpressionLink *m_link;
}; };