gpt4 book ai didi

python - 在 QGraphicsItemGroup 中编辑 QGraphicsTextItem

转载 作者:太空宇宙 更新时间:2023-11-04 06:22:50 26 4
gpt4 key购买 nike

我想要一个 python 应用程序,它显示一堆小肖像和下面的名字。像那样: This is how the application looks like

它们应该是可移动和可编辑的(通过双击文本)。

我正在使用 PyQt4,所以我发现,为 Canvas 使用 QGraphicsViewQGraphicsScene 是最简单的。所以我像这样子类化了一个 QGraphicsItemGroup:

from PyQt4 import QtCore, QtGui
class Speaker(QtGui.QGraphicsItemGroup):
def __init__(self, name, parent=None):
QtGui.QGraphicsItemGroup.__init__(self, parent)

self.setFlag(QtGui.QGraphicsItem.ItemIsMovable)
self.text = QtGui.QGraphicsTextItem(name)
self.text.setTextInteractionFlags(QtCore.Qt.TextEditorInteraction)
self.addToGroup(self.text)
self.portrait = QtGui.QGraphicsPixmapItem(QtGui.QPixmap("portrait.png"))
self.portrait.setY(-35)
self.addToGroup(self.portrait)

def keyPressEvent(self, QKeyEvent):
# Forwarding KeyPress events to the text to enable text editing
self.text.keyPressEvent(QKeyEvent)

但是有一些问题:

  • 文本编辑由单击触发,但我想双击(可能与 this 重复)。
  • 您不能使用鼠标选择文本或移动光标,因为整个组都会随之移动。
  • 如果您停止编辑,光标不会消失。 (虽然我知道该怎么做,但如果我找到激活和停用编辑模式的方法)

我试图捕获双击信号并切换到将所有鼠标事件转发到文本的编辑模式。但是我无法通过双击激活编辑过程,而且我无法保留通过单击其他地方结束编辑的行为。

所以我希望有人能帮助我。知道如何手动激活和停用 QGraphicsTextItem 的文本交互模式可能就足够了。谢谢!

最佳答案

也许你应该调用 QGraphicsItemGroup::setHandlesChildEvents(false)。

参见 SO 问题 Events with QGraphicsItemGroup

关于python - 在 QGraphicsItemGroup 中编辑 QGraphicsTextItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10741584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com