Example #1
0
void Link::paint(QPainter *painter,
    const QStyleOptionGraphicsItem *style, QWidget *widget) {

    if(m_from.isNull() || m_to.isNull()) return;

    if(m_selected) painter->setPen(QPen(QBrush(Qt::green), 3.0));
    else painter->setPen(QPen(QBrush(Qt::darkGreen), 3.0));

    QLineF line(m_from->pos() + m_from->boundingRect().center(),
        m_to->pos() + m_to->boundingRect().center());
    painter->drawLine(line);

    painter->setPen(QPen(QBrush(Qt::blue), 5.0));
    QPointF line13 = (line.p1()*2+line.p2())/3;
    QPointF line23 = (line.p1()+line.p2()*2)/3;
    auto arrow1 = QLineF::fromPolar(15.0, line.angle() - 135);
    auto arrow2 = QLineF::fromPolar(15.0, line.angle() + 135);
    painter->drawLine(arrow1.translated(line13));
    painter->drawLine(arrow2.translated(line13));
    painter->drawLine(arrow1.translated(line23));
    painter->drawLine(arrow2.translated(line23));

    auto tbr = labelBoundingRect();

    painter->setPen(Qt::lightGray);
    if(m_selected) painter->setBrush(QBrush(Qt::yellow, Qt::SolidPattern));
    else painter->setBrush(QBrush(Qt::lightGray, Qt::SolidPattern));
    painter->drawRect(tbr);

    if(m_rtsLink) painter->setPen(QPen(QBrush(Qt::darkRed), 3.0));
    else painter->setPen(QPen(QBrush(Qt::red), 3.0));
    painter->drawText(tbr.center() - QPointF(tbr.width()/2, -4), m_label);
}
Example #2
0
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuQwtSymbol::renderSymbolLabel(QPainter *painter, const QPointF& position) const
{
    QSize symbolSize = QwtSymbol::size();
    QRect symbolRect (position.x(), position.y(), symbolSize.width(), symbolSize.height());
    QRect labelRect  = labelBoundingRect(painter, symbolRect);
    painter->drawText(labelRect.topLeft(), m_label);
}
Example #3
0
bool Link::isSelection(QPointF point) {
    return labelBoundingRect().contains(point);
}