Как создать текст как QPointF() возвращаемый тип pyside/pyQT?

Я хочу добавить текст к многоугольнику, созданному с помощью QPolygonF(). Метод.append() хочет подпись QPointF. Я пробовал различное приведение текста, созданного с помощью метода QPainterPath(), но, похоже, ничего не работает. Как я могу подойти к этому?

Что-то вроде этого. Очевидно, это терпит неудачу, так как append () жалуется, что подпись неверна (не тип QPointF), но это общая идея, которую мне нужно достичь.

self.myPolygon = QtGui.QPolygonF([
        QtCore.QPointF(-100, 0), QtCore.QPointF(0, 100),
        QtCore.QPointF(100, 0), QtCore.QPointF(0, -100),
        QtCore.QPointF(-100, 0)])

textPath = QtGui.QPainterPath()
timesFont = QtGui.QFont("Times", 10)
textPath.addText(25, 60, timesFont, "Color")

#textPath2 = QtCore.QPointF(textPath) 
#This attempt to return QPainterPath as QPointF doesnt work

self.myPolygon.append(textPath)

РЕДАКТИРОВАТЬ:

Я уже пробовал метод toFillPolygon(), но получаю странные результаты.

По сути, у меня есть многоуровневый граф, построенный на многоугольных элементах в виде графа узла. Если я использую QPainter или QPainterPaths, я могу получить то, что хочу. Базовая фигура с текстом внутри или чуть ниже фигуры, которая прекрасно рисует, но тогда я не получаю нужную мне функциональность QPolygon и встроена в эти объекты.

Вот что я получаю с помощью toFillPolygons() в моем графическом интерфейсе:

Ссылка на изображение: QPainterPath -> toFillPolygon

path = QtGui.QPainterPath()

timesFont = QtGui.QFont("Times", 40)
timesFont.setStyleStrategy(QtGui.QFont.ForceOutline)
path.addText(-90, 25, timesFont, "RELAY")

path.moveTo(-100, -100.0)
path.lineTo(100.0, -100.0)
path.lineTo(100.0, 100.0)
path.lineTo(-100.0, 100.0)
path.closeSubpath()
path.setFillRule(QtCore.Qt.WindingFill)
self.myPolygon = path.toFillPolygon()

Тем не менее, прямая форма и текст QPainterPath дает мне то, что я хочу:

Ссылка на изображение: QPainterPath

textPath = QtGui.QPainterPath()

timesFont = QtGui.QFont("Times", 10)
timesFont.setStyleStrategy(QtGui.QFont.ForceOutline)
textPath.addText(25, 60, timesFont, "RELAY")
textPath.moveTo(20.0, 30.0)
textPath.lineTo(80.0, 30.0)
textPath.lineTo(80.0, 70.0)
textPath.lineTo(20.0, 70.0)
textPath.closeSubpath()

Итак, в принципе, как я могу просто создать многоугольник с текстом, содержащимся (или чуть ниже) без артефактов намотки / рисования с первого раза?

0 ответов

Другие вопросы по тегам