我正在尝试定位文本,我希望它坚持到用户拖动它的位置,例如右下角,它将保留在那里,并且当视图调整大小时,文本项保持在右下角,因此它会随着查看。
我尝试过 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_())
我能够找到一种方法,使 QGraphics 中的项目始终保持在您拖动它的位置。
self.view.fitInView(self.scene.sceneRect(), Qt.KeepAspectRatio)
这会定位所有场景矩形项目并调整它们的大小,希望这可以节省您一些时间。