开发者

QT 4.5 - Changing the selection marquee for QGraphicsItem

开发者 https://www.devze.com 2022-12-09 06:57 出处:网络
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:

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)
0

精彩评论

暂无评论...
验证码 换一张
取 消