pau*_*ulm 6 c++ qt4 pyqt qgraphicsview
我有一个相当复杂的QGraphicsView/Scene设置,其中我有复杂交互的项目.
因此,我想对此进行单元测试,以避免在现有功能中产生错误.对于一个测试,我希望:
这将允许我检查项目是否被选中,被移动了正确的数量,并被取消选中.
但是我发现在发送mouseMove事件后鼠标状态变为"已释放",这是我的代码:
QTest.mousePress(gv.viewport(), Qt.LeftButton, Qt.NoModifier, QPoint(80,80), 100)
QTest.mouseMove(gv.viewport(), QPoint(80,80), 200)
QTest.mouseMove(gv.viewport(), QPoint(90,80), 300)
QTest.mouseMove(gv.viewport(), QPoint(100,80), 400)
QTest.mouseRelease(gv.viewport(), Qt.LeftButton, Qt.NoModifier, QPoint(80,80), 900)
Run Code Online (Sandbox Code Playgroud)
其中gv是QGraphicsView.
问题似乎是由QGraphicsItem将mouseMove事件视为hoverMoveEvents - 它应该被视为mouseMoveEvent!
根据文件:
http://qt-project.org/doc/qt-4.8/qgraphicsitem.html#setAcceptHoverEvents
所以看起来这些模拟事件不会设置"鼠标抓取项"?
有关:
编辑:
TLDR; 为什么我的假鼠标事件没有设置当前的鼠标抓取项?这会导致QGraphicsItems获取mouseHover事件而不是mouseMove事件.
终于设法得到实际工作的东西:
w = gv.viewport()
# this actually gets the click to the view
#QTest.mouseMove(w, QPoint(80,80))
event = QMouseEvent(QEvent.MouseMove, QPoint(80,80), w.mapToGlobal(QPoint(80,80)), Qt.LeftButton, Qt.LeftButton, Qt.NoModifier);
#event.setSpontaneous(True)
QApplication.postEvent(w, event);
QTest.qWait(250)
#QTest.mouseMove(w, QPoint(80,80))
event = QMouseEvent(QEvent.MouseButtonPress, QPoint(80,80), w.mapToGlobal(QPoint(80,80)), Qt.LeftButton, Qt.LeftButton, Qt.NoModifier);
QApplication.postEvent(w, event);
QTest.qWait(250)
count = 0
while count < 20:
#QTest.mouseMove(w, QPoint(80+count,80+count))
event = QMouseEvent(QEvent.MouseMove, QPoint(80+count,80+count), w.mapToGlobal(QPoint(80+count,80+count)), Qt.LeftButton, Qt.LeftButton, Qt.NoModifier);
QApplication.postEvent(w, event);
t = w.mapToGlobal(QPoint(80+count,80+count))
#QCursor.setPos(t)
QTest.qWait(20)
count = count + 1
event = QMouseEvent(QEvent.MouseButtonRelease, QPoint(100,100), w.mapToGlobal(QPoint(100,100)), Qt.LeftButton, Qt.LeftButton, Qt.NoModifier);
QApplication.postEvent(w, event);
Run Code Online (Sandbox Code Playgroud)
为什么这些捏造的事件起作用而QTest不是我不知道的......
似乎QTest将物理移动鼠标,因为此代码的行为就像鼠标移动但没有移动一样.让我感到困惑!
| 归档时间: |
|
| 查看次数: |
1237 次 |
| 最近记录: |