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();  
}
相关推荐
lmy_loveF3 分钟前
go 切换go version 版本
开发语言·后端·golang
小白快快跑哦7 分钟前
python-字符串全解(四):字符串方法
开发语言·python·字符串
大模型丫丫36 分钟前
LangGraph + MCP(Model Context Protocol)完整讲解
java·开发语言·数据库
凡泰AI38 分钟前
小程序容器技术解析:一个能够同时在多端APP运行同一个小程序的SDK需要关注哪些内容?
开发语言·小程序·mpaas·uni·技术实践
小灰灰搞电子39 分钟前
Rust+Slint 实现抽屉式侧边栏源码分享
开发语言·rust·侧边栏
quantdash_cc43 分钟前
如何设计高效率的批量股票数据获取程序?QuantDash Python SDK 全市场行情拉取实战指南
开发语言·python·数据分析·量化交易·股票数据·quantdash
Jul1en_1 小时前
Matt 与 Uncle Bob 的播客访谈有感
开发语言·经验分享·笔记·ai·开源·github·ai编程
玖玥拾1 小时前
Lua 基础语法(五)Unity xLua基础配置与 C# 访问 Lua
开发语言·unity·c#·lua
淼澄研学1 小时前
Sonos空间音频技术解析与Python本地API控制实操
开发语言·python·音视频
研☆香1 小时前
js中使用的正则表达式
开发语言·javascript·正则表达式