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()
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))
def map_to_viewport(view: QGraphicsView, item: QGraphicsItem, point: QPointF) -> QPoint: point = item.mapToScene(point) return view.mapFromScene(point)