这是我的示例(输入法不起作用):我用它创建了一个 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_()