Qt QGraphicsTextItem 设置项目粘贴到拖动位置

问题描述 投票:0回答:1

我正在尝试定位文本,我希望它坚持到用户拖动它的位置,例如右下角,它将保留在那里,并且当视图调整大小时,文本项保持在右下角,因此它会随着查看。

我尝试过 SetPos,但我认为由于数学原因,我很难弄清楚如何在视图大小调整时为文本设置正确的 POS。我创建了一个更简单的代码版本,允许文本拖动,如果有人在他们的项目中解决了这个问题,我很想听听如何解决,谢谢。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QGraphicsScene, QGraphicsView, QGraphicsTextItem
from PyQt5.QtCore import Qt


class MyWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        layout = QVBoxLayout()
        self.setLayout(layout)

        # Create a QGraphicsScene
        self.scene = QGraphicsScene()

        # Create a QGraphicsTextItem and add it to the scene
        self.text_item = QGraphicsTextItem("Hello, World!")
        self.text_item.setTextInteractionFlags(Qt.TextEditorInteraction)
        self.text_item.setFlags(QGraphicsTextItem.ItemIsSelectable | QGraphicsTextItem.ItemIsMovable | QGraphicsTextItem.ItemIsFocusable)

        self.scene.addItem(self.text_item)

        # Set initial font size
        self.font_size = 12

        # Create a QGraphicsView and set the scene
        self.view = QGraphicsView(self.scene)
        layout.addWidget(self.view)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    widget = MyWidget()
    widget.show()
    sys.exit(app.exec_())

python qt qgraphicsitem qgraphicstextitem
1个回答
0
投票

我能够找到一种方法,使 QGraphics 中的项目始终保持在您拖动它的位置。

self.view.fitInView(self.scene.sceneRect(), Qt.KeepAspectRatio)

这会定位所有场景矩形项目并调整它们的大小,希望这可以节省您一些时间。

© www.soinside.com 2019 - 2024. All rights reserved.