Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在QtGraphicsView/qtgraphicscene(PyQt4)中将图像放置在特定位置?_Python_Qt_Pyqt4 - Fatal编程技术网

Python 如何在QtGraphicsView/qtgraphicscene(PyQt4)中将图像放置在特定位置?

Python 如何在QtGraphicsView/qtgraphicscene(PyQt4)中将图像放置在特定位置?,python,qt,pyqt4,Python,Qt,Pyqt4,我正在使用Qt设计器和PyQt4创建一个应用程序。我想知道如何将图像添加到QtGraphicsView小部件的所需位置。 例如,当我单击QtGraphicsView小部件时,我想将图像添加到该确切位置。我在网上搜索过,但找不到任何有用的东西 我创建了一个场景子类来管理将在QtGraphicsView小部件中显示的项目。我能够得到我点击的位置的坐标,但我不知道如何将项目放置在那个特定的位置。下面是我的代码: graphicscene类(QtGui.qgraphicscene): def uuu i

我正在使用Qt设计器和PyQt4创建一个应用程序。我想知道如何将图像添加到
QtGraphicsView
小部件的所需位置。 例如,当我单击
QtGraphicsView
小部件时,我想将图像添加到该确切位置。我在网上搜索过,但找不到任何有用的东西

我创建了一个场景子类来管理将在
QtGraphicsView
小部件中显示的项目。我能够得到我点击的位置的坐标,但我不知道如何将项目放置在那个特定的位置。下面是我的代码:

graphicscene类(QtGui.qgraphicscene):
def uuu init uuu(self,parent=None):
super(graphicscene,self)。\uuuu init\uuuu(父级)
def鼠标压力事件(自身、事件):
position=QtCore.QPointF(event.scenePos())
pixmap=QtGui.QPixmap(“host.png”)
pixmap_scaled=pixmap.scaled(30,30,QtCore.Qt.KeepAspectRatio)
self.itemAt(pixmap_scaled,position.x(),position.y())
self.addPixmap(pixmap\u缩放)
打印“按下此处:”+str(position.x())+“,“+str(position.y())
self.update()
def mouseReleaseEvent(自身,事件):
position=QtCore.QPointF(event.scenePos())
打印“此处发布:”+str(position.x())+“,“+str(position.y())
self.update()
类窗体(QtGui.QMainWindow):
定义初始化(自):
超级(mininetGUI,self)。\uuuu init\uuuuuu()
self.ui=uic.loadUi('form.ui')
self.scene=graphicscene()
self.ui.view.setScene(self.scene)
使用
addItem(您的\u pixmap\u对象)
QPixmap
添加到场景中。然后,您可以在返回的
QGraphicsItem
上使用
setPos(…)
(这是在使用
addItem(…)
时返回的,并且项目成功插入到场景中)。传递到
setPos(…)
的点将是事件的一部分(正如您通过调用
event.scenePos()
所做的那样)

如果要使用
QGraphicsPixmapItem
的过程与上面的过程相同,但只需像在代码中一样使用
self.addPixmap(…)

除了放置项目外,您可能还需要处理一件事,即按下鼠标按钮,将光标移动到场景中的其他位置,同时仍按下按钮,然后将其释放。这将在移动事件的起始位置插入项目(同时按下按钮并移动)但是,这可能不是您想要做的。您必须考虑在
mouseReleaseEvent(…)
中处理插入是否会更好。这实际上取决于您希望在这个特定场景中如何工作。

使用
addItem(您的pixmap\u对象)
QPixmap
添加到场景中。然后可以在返回的
QGraphicsItem
上使用
setPos(…)
(这是在使用
addItem(…)
时返回的,并且项目成功插入场景中)。传递到
setPos(…)的点
将是事件的一部分(正如您通过调用
event.scenePos()
所做的那样)

如果要使用
QGraphicsPixmapItem
的过程与上面的过程相同,但只需像在代码中一样使用
self.addPixmap(…)

除了放置项目外,您可能还需要处理一件事,即按下鼠标按钮,将光标移动到场景中的其他位置,同时仍按下按钮,然后将其释放。这将在移动事件的起始位置插入项目(同时按下按钮并移动)但是,这可能不是您想要做的。您必须考虑是否更好地处理
mouseReleaseEvent(…)
中的插入。这实际上取决于您希望如何处理此特定场景。

乐意帮助。:)顺便说一句,无需编辑问题并编写解决方案。一旦你接受了一个答案,系统会处理剩下的问题。很乐意帮忙。:)顺便说一句,不需要编辑问题并写出已解决的问题。一旦你接受了一个答案,系统就会处理剩下的问题。
pixmap = QPixmap(...)
sceneItem = self.addItem(pixmap)
sceneItem.setPos(event.scenePos())