QT之QGraphicsView-动态2D显示容器

QGraphicsView提供了一个2D界面,用于管理并交互大量自定义图元,支持旋转和缩放。它包含一个事件传播结构,允许双精度交互。QGraphicsView、QGraphicsScene和QGraphicsItem构成了Qt的2D显示系统,其中QGraphicsItem支持多种事件处理,如鼠标和键盘事件。QGraphicsPixmapItem用于显示图片,支持多种格式通过插件进行加载。
摘要由CSDN通过智能技术生成
  • QGraphicsView提供了一个界面,它既可以管理大量数据的定制2Ditems,又可以与它们交互,有一个view widget可以把这些项绘制出来,并支持旋转与缩放。这个柜架也包含一个事件传播结构,对于在scene中的这些items,它具有双精度的交互能力。items能处理键盘事件,鼠标的按,移动,双击事件,也可以跟踪鼠标移动。
  • QGraphicsView容器-> QGraphicsScene场景->QGraphicsItem图元
  • (电视(容器)-> 画面(场景)->画面里面的演员、道具(图元)


 

Qt的一些其他类QGraphicsView

QGraphicsItem图元类,只是一个虚基类,有8种不同的派生类。

 

    

QgraphicsEllipseItem 椭圆图元
QGraphicsLineItem  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt QGraphicsView是一个框架,用于在Qt应用程序中创建交互式2D图形界面。它提供了一个容器,用于显示和编辑Qt QGraphicsItem的场景,Qt QGraphicsItem是可以在场景中绘制的图元。QGraphicsItem是QGraphicsView的一个子类,它表示场景中的一个可视化的对象。可以使用QGraphicsView创建自定义图元。 以下是创建自定义图元的基本步骤: 1.创建一个自定义类,该类继承自QGraphicsItem。 2.实现paint()函数,该函数用于在场景中绘制图元。 3.实现boundingRect()函数,该函数用于确定图元的边界框。 4.实现shape()函数,该函数用于定义图元的形状。 5.将自定义图元添加到场景中。 以下是一个简单的自定义图元的例子: ```c++ class MyItem : public QGraphicsItem { public: MyItem(); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); QPainterPath shape() const; }; MyItem::MyItem() { setFlag(ItemIsMovable); } QRectF MyItem::boundingRect() const { return QRectF(-10, -10, 20, 20); } void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { painter->setPen(Qt::NoPen); painter->setBrush(Qt::red); painter->drawEllipse(-10, -10, 20, 20); } QPainterPath MyItem::shape() const { QPainterPath path; path.addEllipse(-10, -10, 20, 20); return path; } ``` 在主函数中,创建场景和视图,并将自定义图元添加到场景中: ```c++ int main(int argc, char *argv[]) { QApplication a(argc, argv); QGraphicsScene scene; QGraphicsView view(&scene); MyItem *item = new MyItem; scene.addItem(item); view.show(); return a.exec(); } ``` 这将创建一个红色的圆形图元,可以拖动它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值