{
Q_OBJECT
public:
{
setItUp();
}
{
setItUp();
}
~MyRect() {}
void setItUp()
{
m_penWidth = 1.0;
setPen
( QPen(Qt
::green) );
setAcceptHoverEvents( true );
}
{ //looks ok
return this->rect().adjusted( -m_penWidth, -m_penWidth,
m_penWidth, m_penWidth );
}
protected:
{
Q_UNUSED(widget);
// this way is faster then painter->store();
QPen oldPen
= painter
->pen
();
QBrush oldoldBrush
= painter
->brush
();
painter->setBrush(brush());
if (option
->state
& QStyle::State_Selected) { painter->setPen(pen());
} else {
painter->setPen(hilitePen);
}
painter->drawRect(rect());
// restore painter:
painter->setPen(oldPen);
painter->setBrush(oldBrush);
}
private:
qreal m_penWidth;
};
class MyRect : public QObject, public QGraphicsRectItem
{
Q_OBJECT
public:
MyRect( QGraphicsItem *pParent=0 )
: QGraphicsRectItem( pParent )
{
setItUp();
}
MyRect( const QRectF & rect, QGraphicsItem* pParent=0 )
: QGraphicsRectItem( rect, pParent )
{
setItUp();
}
~MyRect() {}
void setItUp()
{
m_penWidth = 1.0;
setPen( QPen(Qt::green) );
setAcceptHoverEvents( true );
setFlag( QGraphicsItem::ItemIsSelectable, true );
}
QRectF boundingRect() const
{ //looks ok
return this->rect().adjusted( -m_penWidth, -m_penWidth,
m_penWidth, m_penWidth );
}
protected:
void paint( QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget )
{
Q_UNUSED(widget);
// this way is faster then painter->store();
QPen oldPen = painter->pen();
QBrush oldoldBrush = painter->brush();
painter->setBrush(brush());
if (option->state & QStyle::State_Selected) {
painter->setPen(pen());
} else {
QPen hilitePen(QBrush(Qt::red),m_penWidth);
painter->setPen(hilitePen);
}
painter->drawRect(rect());
// restore painter:
painter->setPen(oldPen);
painter->setBrush(oldBrush);
}
private:
qreal m_penWidth;
};
To copy to clipboard, switch view to plain text mode
Bookmarks