QT之QGraphicsProxyWidget

文章目录

介绍

QGraphicsProxyWidget 是 Qt 图形框架中的类,它是 QGraphicsItem 的一个子类。这个类提供了一个方式来在 QGraphicsView 系统中嵌入自定义的 Qt 控件,而不需要直接从 QGraphicsItem 继承。

使用 QGraphicsProxyWidget 的主要优势在于它能够利用 Qt 的图形视图框架的所有功能,例如视图变换、场景和视图的互动、以及视图动画等。

以下是一些详细的用法:

1)创建和设置:你可以直接创建一个 QGraphicsProxyWidget 的实例,并通过 setWidget() 方法将其实例化,该方法接受一个 QWidget 类型的参数,你可以将需要嵌入的部件作为参数传入。

2)事件处理:QGraphicsProxyWidget 在两个对象之间转发事件,它不仅基于 QWidget 的整数型几何坐标,也基于 QGraphicsWidget 的浮点型几何坐标,进行转换。

3)功能支持:QGraphicsProxyWidget 支持 QWidget 的所有核心功能,包括Tab切换焦点、键盘输入、拖放和弹出窗口等。对于弹出窗口的处理,例如当嵌入的 QComboBox 显示其弹出列表时,会自动创建一个新的 QGraphicsProxyWidget ,嵌入弹出窗口并正确定位。

4)嵌套部件:你还可以嵌入复杂的小部件,例如带有子小部件的小部件。这些子部件也可以被代理,并嵌入到主部件中。

例程

cpp 复制代码
#include <QGraphicsProxyWidget>  
#include <QGraphicsScene>  
#include <QGraphicsView>  
  
int main(int argc, char *argv[])  
{  
    QApplication a(argc, argv);  
  
    QGraphicsScene scene;  
    QGraphicsProxyWidget *proxy = new QGraphicsProxyWidget();  
    QWidget *widget = new QWidget();  
    widget->setFixedSize(200, 200);  
    // 在 QGraphicsProxyWidget 中嵌入自定义控件  
    proxy->setWidget(widget);  
    scene.addItem(proxy);  
  
    QGraphicsView view(&scene);  
    view.show();  
    return a.exec();  
}
相关推荐
http阿拉丁神猫7 小时前
Go语言入门笔记:从基础到开发环境搭建(二)
开发语言·笔记·golang
不会就选b8 小时前
C++补充部分(一)--lambda 表达式
开发语言·c++
Pniubi11 小时前
HashMap的扩容和树化边界
java·开发语言
gCode Teacher 格码致知13 小时前
Pandas教学-17:Series与Dataframe的关系
开发语言·python·pandas
发量惊人的中年网工13 小时前
分公司访问总部ERP慢怎么办?SD-WAN组网的排查与验收要点
服务器·开发语言·php
下页、再停留13 小时前
【C#桌面客户端系列学习-15】生成可视化图表之折线图、柱状图、饼状图
开发语言·c#
ShineWinsu13 小时前
对于JavaScript:操作元素的解析
开发语言·前端·javascript·面试·web·dom·元素
zhanghaha131414 小时前
Qt 类本质就是 C++ 的类,只是 Qt 框架扩展了一套【QObject 对象模型】
qt
益莱储中国15 小时前
深度解析:RF 实验室从 5G迈向 6G 的过程中保持技术领先与设备升级的路径
开发语言·php
benchmark_cc16 小时前
Python 量化系统如何设计统一的数据访问接口:从策略解耦到数据层架构
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash