gpt4 book ai didi

qt - 如何在 QGraphicsPolygonItem 中添加 QInputDialog.getText 文本?

转载 作者:行者123 更新时间:2023-12-04 10:23:17 25 4
gpt4 key购买 nike

我在 PyQt4 中构建,无法弄清楚如何将文本添加到 QGraphicsPolygonItem。这个想法是在用户双击后将文本设置在矩形框的中间(并通过 QInputDialog.getText 获取对话框)。

类是:

class DiagramItem(QtGui.QGraphicsPolygonItem):
def __init__(self, diagramType, contextMenu, parent=None, scene=None):
super(DiagramItem, self).__init__(parent, scene)
path = QtGui.QPainterPath()
rect = self.outlineRect()
path.addRoundRect(rect, self.roundness(rect.width()), self.roundness(rect.height()))
self.myPolygon = path.toFillPolygon()

我的鼠标双击事件看起来像这样,但没有任何更新!

def mouseDoubleClickEvent(self, event):
text, ok = QtGui.QInputDialog.getText(QtGui.QInputDialog(),'Create Region Title','Enter Region Name: ', \
QtGui.QLineEdit.Normal, 'region name')
if ok:
self.myText = str(text)
pic = QtGui.QPicture()
qp = QtGui.QPainter(pic)
qp.setFont(QtGui.QFont('Arial', 40))
qp.drawText(10,10,200,200, QtCore.Qt.AlignCenter, self.myText)
qp.end()

最佳答案

嗯,你做的不对。您正在绘制到 QPicture (pic) 并将其丢弃。

我假设您想在 QGraphicsPolygonItem 上绘制paint QGraphicsItem(及其派生类)的方法负责绘制项目。如果你想用项目绘制额外的东西,你应该覆盖那个方法并在那里进行绘制:

class DiagramItem(QtGui.QGraphicsPolygonItem):
def __init__(self, diagramType, contextMenu, parent=None, scene=None):
super(DiagramItem, self).__init__(parent, scene)
# your `init` stuff
# ...

# just initialize an empty string for self.myText
self.myText = ''

def mouseDoubleClickEvent(self, event):
text, ok = QtGui.QInputDialog.getText(QtGui.QInputDialog(),
'Create Region Title',
'Enter Region Name: ',
QtGui.QLineEdit.Normal,
'region name')
if ok:
# you can leave it as QString
# besides in Python 2, you'll have problems with unicode text if you use str()
self.myText = text
# force an update
self.update()

def paint(self, painter, option, widget):
# paint the PolygonItem's own stuff
super(DiagramItem, self).paint(painter, option, widget)

# now paint your text
painter.setFont(QtGui.QFont('Arial', 40))
painter.drawText(10,10,200,200, QtCore.Qt.AlignCenter, self.myText)

关于qt - 如何在 QGraphicsPolygonItem 中添加 QInputDialog.getText 文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498616/

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