简述
图形视图对将任何 widget 嵌入到场景中提供了无缝的支持。可以嵌入简单的 widget例如QLineEdit、QPushButton也可以是复杂的 widget例如QTabWidget甚至是完整的主窗口。
要将 widget 嵌入场景中只需要简单地调用 QGraphicsScene::addWidget()或者创建一个 QGraphicsProxyWidget 对象并将 widget 手工地嵌入其中。
QGraphicsProxyWidget
QGraphicsProxyWidget 类提供了一个代理层用于在 QGraphicsScene 中嵌入一个 QWidget。
QGraphicsProxyWidget 嵌入基于 QWidget 的部件例如QPushButton、QFontComboBox甚至 QFileDialog、QGraphicsScene。它在两个对象之间转发事件并在 QWidget 的基于整数的 geometry 和 QGraphicsWidget 的基于 qreal 的 geometry 之间进行转换。
QGraphicsProxyWidget 支持 QWidget 的所有核心功能包括Tab 焦点、键盘输入、拖放和弹出窗口。还可以嵌入复杂的 widget例如带有子 widget 的 widget。
QGraphicsProxyWidget 通过为每个 popup 创建一个子代理来负责嵌入 widget 的 popup 孩子的自动嵌入。这意味着当嵌入的 QComboBox 显示其弹出列表时会自动创建一个新的 QGraphicsProxyWidget嵌入 popup 并正确定位。这只有当 popup 是嵌入的 widget 的孩子时才有效例如 QToolButton::setMenu() 要求 QMenu 实例是 QToolButton 的孩子。
使用 QGraphicsProxyWidget 嵌入 Widget
使用 QGraphicsProxyWidget 嵌入一个 widget 有两种方法
- 将一个 widge

本文介绍了如何在QGraphicsScene中嵌入QWidget,包括使用QGraphicsProxyWidget的步骤和同步Widget状态的方法。QGraphicsProxyWidget作为代理,支持与QWidget的无缝集成,允许添加各种类型,包括复杂组件,并自动处理popup的嵌入。通过addWidget()或创建QGraphicsProxyWidget手动设置Widget,代理与嵌入Widget状态保持同步,当一个被销毁时,另一个也会随之销毁。
最低0.47元/天 解锁文章
625

被折叠的 条评论
为什么被折叠?



