Is it possible to define the style of the selection marquee when a QGraphicsItem is set selectd via setSelected(true)?
QT 4.5 - Changing the selection marquee for QGraphicsItem
There's a good solution at:
http://www.qtcentre.org/threads/15089-QGraphicsView-change-selected-rectangle-style
Note to anyone finding this: This new answer is what you want; a much better answer than the earlier accepted answer. –
Domingadomingo
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!
@Barbarity actually found a great workaround, see other answer. –
Domingadomingo
There's a good solution at:
http://www.qtcentre.org/threads/15089-QGraphicsView-change-selected-rectangle-style
Note to anyone finding this: This new answer is what you want; a much better answer than the earlier accepted answer. –
Domingadomingo
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)
© 2022 - 2024 — McMap. All rights reserved.