QT 4.5 - Changing the selection marquee for QGraphicsItem
Is it possible to define the style of the开发者_运维百科 selection marquee when a QGraphicsItem is set selectd via setSelected(true)?
There's a good solution at:
http://www.qtcentre.org/threads/15089-QGraphicsView-change-selected-rectangle-style
Technically no.
After a quick look into Qt's source code, it seems that the standard item types QGraphics*Item have the dashed outline as a default behavior. You can work around this by subclassing your own QGraphicsItem.
if (option->state & (QStyle::State_Selected | QStyle::State_HasFocus))
qt_graphicsItem_highlightSelected(this, painter, option);
I guess you can not change the "style". This seems to be a very static feature of the standard QGraphicsItems.
Hope that helps!
Just adding to cesarbs' answer with a python example, it took me a bit to translate all the syntax so thought I'd provide some code:
class CustomItem(QtWidgets.QGraphicsPixmapItem):
def paint(self, painter, option, widget):
if option.state & QtWidgets.QStyle.State_Selected:
option.state &= not QtWidgets.QStyle.State_Selected
super().paint(painter, option, widget)
# draw red outline for example
pen = QtGui.QPen(QtGui.QColor("red"))
painter.setPen(pen)
painter.drawRect(option.rect)
else:
super().paint(painter, option, widget)
精彩评论