当前位置: 首页 > news >正文

qt QGraphicsEllipseItem详解

1、概述

QGraphicsEllipseItem是Qt框架中QGraphicsItem的一个子类,它提供了一个可以添加到QGraphicsScene中的椭圆项。QGraphicsEllipseItem表示一个带有填充和轮廓的椭圆,也可以用于表示椭圆段(通过startAngle()和spanAngle()方法)。它允许你设置椭圆的几何形状、颜色、边框等属性,并可以响应各种事件,如鼠标点击、移动等。QGraphicsEllipseItem是Qt图形视图框架(Graphics View Framework)的一部分,该框架提供了一个用于2D图形项的高效视图和场景架构。

2、重要方法

QGraphicsEllipseItem提供了一系列方法来设置和控制椭圆的属性。以下是一些重要的方法:

  • QGraphicsEllipseItem(qreal x, qreal y, qreal width, qreal height, QGraphicsItem *parent = nullptr):构造函数,创建一个椭圆项,指定其外接矩形的左上角坐标(x, y)和宽度(width)及高度(height)。
  • QGraphicsEllipseItem(const QRectF &rect, QGraphicsItem *parent = nullptr):构造函数,创建一个椭圆项,指定其外接矩形rect。
  • QGraphicsEllipseItem(QGraphicsItem *parent = nullptr):构造函数,创建一个椭圆项,不指定其外接矩形,可以在之后通过setRect()方法设置。
  • void setRect(const QRectF &rect):设置椭圆的外接矩形。
  • void setRect(qreal x, qreal y, qreal width, qreal height):设置椭圆的外接矩形的左上角坐标和尺寸。
  • QRectF rect() const:返回椭圆的外接矩形。
  • void setSpanAngle(int angle):设置椭圆段的扫过角度。
  • int spanAngle() const:返回椭圆段的扫过角度。
  • void setStartAngle(int angle):设置椭圆段的起始角度。
  • int startAngle() const:返回椭圆段的起始角度。
  • void setPen(const QPen &pen):设置椭圆的边框。
  • void setBrush(const QBrush &brush):设置椭圆的填充颜色或图案。

此外,QGraphicsEllipseItem还继承了QGraphicsItem的一些方法,如boundingRect()、shape()、contains()、paint()等,这些方法用于定义椭圆的边界、形状、包含关系以及绘制方式。

3、重要信号

QGraphicsEllipseItem本身并没有定义特定的信号,但它继承了QGraphicsItem的信号。这些信号通常与项目的交互和状态变化相关,如鼠标事件(mousePressEvent、mouseMoveEvent、mouseReleaseEvent等)、键盘事件(keyPressEvent、keyReleaseEvent等)、选择状态变化(selectionChanged)等。你可以通过连接这些信号到相应的槽函数来响应这些事件。

4、常用枚举类型

QGraphicsEllipseItem并没有定义自己的枚举类型,但它继承了QGraphicsItem的一些枚举类型。这些枚举类型通常用于控制项目的行为,如项目的可见性(QGraphicsItem::ItemIsVisible)、项目的可移动性(QGraphicsItem::ItemIsMovable)、项目的可选择性(QGraphicsItem::ItemIsSelectable)等。你可以通过调用QGraphicsItem的setFlag()方法来设置这些标志。

#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsEllipseItem>int main(int argc, char *argv[])
{QApplication app(argc, argv);// Create a sceneQGraphicsScene *scene = new QGraphicsScene();// Create an ellipse itemQGraphicsEllipseItem *ellipse = new QGraphicsEllipseItem();ellipse->setRect(0, 0, 100, 60);  // Set the ellipse dimensions (x, y, width, height)ellipse->setBrush(QBrush(Qt::blue));  // Set fill colorellipse->setPen(QPen(Qt::red, 2));    // Set border color and width// Add the ellipse to the scenescene->addItem(ellipse);// Create a view to display the sceneQGraphicsView *view = new QGraphicsView(scene);view->setRenderHint(QPainter::Antialiasing);  // Enable antialiasing for smoother renderingview->setSceneRect(-200, -200, 400, 400);     // Set the visible areaview->resize(400, 400);                       // Set the window size// Show the viewview->show();return app.exec();
}

觉得有帮助的话,打赏一下呗。。

           

需要商务合作(定制程序)的欢迎私信!! 

http://www.lryc.cn/news/495022.html

相关文章:

  • Python websocket
  • 【MySQL-5】MySQL的内置函数
  • 深度学习笔记之BERT(三)RoBERTa
  • C++知识点总结(59):背包型动态规划
  • C++:反向迭代器的实现
  • webGL入门教程_04vec3、vec4 和齐次坐标总结
  • uniapp中父组件数组更新后与页面渲染数组不一致实战记录
  • 优化 Conda 下载速度:详细的代理配置和网络管理策略
  • 服务器遭受DDoS攻击后如何恢复运行?
  • MFC音视频播放器-支持电子放大等功能
  • c语言编程1.17蓝桥杯历届试题-回文数字
  • el-table 纵向 横向 多级表头
  • uniapp开发微信小程序笔记8-uniapp使用vant框架
  • 分布式项目使用Redis实现数据库对象自增主键ID
  • npm-运行项目报错:A complete log of this run can be found .......npm-cache_logs\
  • SolarCube: 高分辨率太阳辐照预测基准数据集
  • 华为小米苹果三星移动设备访问windows共享文件夹windows11
  • 网络安全三防指南:只防病毒不安全
  • 论文概览 |《Urban Analytics and City Science》2023.05 Vol.50 Issue.4
  • 【ROS2】ROS2 C++版本 与 Python版本比较
  • 物联网射频识别和RFID开发(一):RFID基础—概念、应用
  • JVM:即时编译器,C2 Compiler,堆外内存排查
  • webpack5 的五大核心配置(二)
  • 【查询基础】.NET开源 ORM 框架 SqlSugar 系列
  • git push使用
  • 【iOS】多线程基础
  • 常用网站网址
  • go语言切片
  • 鸿蒙NEXT元服务:利用App Linking实现无缝跳转与二维码拉起
  • 网络药理学之薛定谔Schrödinge Maestro:6、分子对接(Glide、Ligand docking)和可视化