2
我想要一個python應用程序,它顯示一堆小肖像和它下面的名字。像這樣: 編輯QGraphicsTextItem裏面的QGraphicsItemGroup
它們應該是可移動和可編輯的(通過雙擊文本)。
我使用的是PyQt4,所以我想通過使用QGraphicsView
和QGraphicsScene
作爲畫布是最容易的。所以我子類一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
的文本交互模式可能就足夠了。謝謝!