Paint the connection text, boxes separately.
This commit is contained in:
parent
f170d8854b
commit
cf42655519
4 changed files with 60 additions and 4 deletions
|
@ -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() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 );
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue