示例#1
0
 def test_tool_tips(self):
     scene = GraphicsScene()
     view = QGraphicsView(scene)
     w = TextListWidget()
     text = "A" * 10
     w.setItems([text, text])
     scene.addItem(w)
     view.grab()  # ensure w is laid out
     wrect = view.mapFromScene(w.mapToScene(
         w.contentsRect())).boundingRect()
     p = QPoint(wrect.topLeft() + QPoint(5, 5))
     ev = QHelpEvent(QHelpEvent.ToolTip, p, view.viewport().mapToGlobal(p))
     try:
         QApplication.sendEvent(view.viewport(), ev)
         self.assertEqual(QToolTip.text(), text)
     finally:
         QToolTip.hideText()
示例#2
0
 def __updateView(self, view: QGraphicsView, rect: QRectF) -> None:
     view.setSceneRect(rect)
     viewrect = view.mapFromScene(rect).boundingRect()
     view.setFixedHeight(int(math.ceil(viewrect.height())))
     container = view.parent()
     if rect.isEmpty():
         container.setVisible(False)
         return
     # map the rect to (main) viewport coordinates
     viewrect = qgraphicsview_map_rect_from_scene(self, rect).boundingRect()
     viewrect = qrectf_to_inscribed_rect(viewrect)
     viewportrect = self.viewport().rect()
     visible = (viewrect.top() < viewportrect.top()
                or viewrect.y() + viewrect.height() >
                viewportrect.y() + viewportrect.height())
     container.setVisible(visible)
     # force immediate layout of the container overlay
     QCoreApplication.sendEvent(container, QEvent(QEvent.LayoutRequest))
示例#3
0
def map_to_viewport(view: QGraphicsView, item: QGraphicsItem,
                    point: QPointF) -> QPoint:
    point = item.mapToScene(point)
    return view.mapFromScene(point)