0

这是我的示例(输入法不起作用):我用它创建了一个 qgraphicsview 和一个根场景。然后我用QGraphicsProxyWidget再次创建一个qgraphicsview,将其添加到根场景中,然后输入法不起作用!

我试图测试是否调用了子视图 inputMethodEvent,实际上在我输入时它没有被调用。只有当我在根视图中输入时,才能调用 inputMethodEvent。

我也试过用1sec开头的QTimer调用inputMethodEvent,但是传递给inputMethodEvent的参数不正确!

请帮我!谢谢!

from PyQt5 import QtGui, QtCore, QtWidgets


app = QtWidgets.QApplication([])

view = QtWidgets.QGraphicsView()
scene = QtWidgets.QGraphicsScene()
view.setScene(scene)


proxy = QtWidgets.QGraphicsProxyWidget()
subview = QtWidgets.QGraphicsView()
subscene = QtWidgets.QGraphicsScene()
subview.setScene(subscene)
text = QtWidgets.QGraphicsTextItem('hello')
text.setTextInteractionFlags(QtCore.Qt.TextEditorInteraction)
scene.addItem(text)
subscene.addItem(text)
proxy.setWidget(subview)
scene.addItem(proxy)

view.show()
app.exec_()

这样,它在没有子视图的情况下工作,但我想在子视图中编辑它:

from PyQt5 import QtGui, QtCore, QtWidgets

app = QtWidgets.QApplication([])
view = QtWidgets.QGraphicsView()
scene = QtWidgets.QGraphicsScene()
view.setScene(scene)
text = QtWidgets.QGraphicsTextItem('hello')
text.setTextInteractionFlags(QtCore.Qt.TextEditorInteraction)
scene.addItem(text)
view.show()
app.exec_()

4

0 回答 0