QT个人笔记
1、QT的setCursor(Qt::CrossCursor) 干什么用
ui->View->setCursor(Qt::CrossCursor);
setCursor函数用于设置窗口上的鼠标光标,Qt::CrossCursor表示设置为十字光标,十字光标可以用于在窗口中绘图或者在窗口中拖动对象。
ui->View->setMouseTracking(true);
ui->View->setDragMode(QGraphicsView::RubberBandDrag);
QPointF pointScene =ui->View->mapToScene(point);
QPoint和QPointF都是Qt中表示2D坐标点的类,它们的区别在于精度和浮点数支持。
- 精度 QPoint使用整数表示坐标点,因此其精度比QPointF低。在大多数情况下,QPoint的精度足够满足需求。 QPointF使用浮点数表示坐标点,因此其精度比QPoint高。在需要更高精度的场景下,应使用QPointF。
- 浮点数支持 QPoint不支持浮点数操作,因此无法直接进行缩放、旋转等操作。 QPointF支持浮点数操作,因此可以直接进行缩放、旋转等变换操作。这使得QPointF在图形绘制、动画等场景中更加方便。 总之,如果您需要更高的精度和浮点数支持,请使用QPointF。否则,使用QPoint即可。
void MyWidget::mousePressEvent(QMouseEvent *event)
{
QPoint pos = event->pos(); // 使用鼠标坐标
Q_UNUSED(event); // 告诉编译器我们不需要使用事件本身
// ...
}
QGraphicsView *view = new QGraphicsView;
QGraphicsScene *scene = new QGraphicsScene;
view->setScene(scene);
// 设置场景的矩形区域
scene->setSceneRect(0, 0, 800, 600);
// 获取场景的矩形区域
QRectF rect = scene->sceneRect();
QGraphicsRectItem *item=new QGraphicsRectItem(rect);
item->setFlags(QGraphicsItem::ItemIsSelectable
| QGraphicsItem::ItemIsFocusable);
1、QGraphicsRectItem *item = new QGraphicsRectItem(rect);
该语句创建了一个矩形图形项,并将其指针保存在名为item的QGraphicsRectItem类型指针中。rect是一个QRectF类型的矩形,用于指定矩形图形项的位置和大小。
2、item->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable);
该语句设置了矩形图形项的标志位。其中,ItemIsSelectable表示该图形项可以被选中,ItemIsFocusable表示该图形项可以获得焦点。 通过设置这些标志位,我们可以在需要时对矩形图形项进行选择和操作。例如,在场景中添加一个鼠标事件处理函数时,可以使用QGraphicsItem的isSelected()函数来判断该图形项是否被选中。例如:
void MyScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
QGraphicsItem *item = itemAt(event->scenePos(), QTransform());
if (item && item->isSelected()) {
// 如果该图形项被选中,则执行一些操作
}
}
Qt的Graphics View框架是一个用于2D图形可视化的框架,可以用于创建复杂的交互式图形应用程序。该框架包括以下几个主要组件:
- QGraphicsItem:图形项类,是Graphics View框架的核心。该类表示场景中的一个图形元素,可以是简单的图形元素(如矩形、椭圆、线条等),也可以是复杂的图形元素(如图像、文本、路径等)。每个图形项都有一个位置、旋转角度、缩放因子等属性,可以接收鼠标、键盘等事件。
- QGraphicsScene:场景类,是一个虚拟的平面,用于存储和管理图形项。场景可以看作是一块画布,而图形项则是画布上的图形元素。场景可以包含多个图形项,也可以嵌套其他场景。每个场景都有一个矩形区域,表示场景中所有图形项的边界矩形。
- QGraphicsView:视图类,用于在窗口中显示场景。视图类负责将场景中的图形项渲染到窗口上,并提供用户与图形项交互的接口。视图可以接收用户的鼠标、键盘等事件,并将其转发给场景和图形项。
- QGraphicsWidget:小部件类,是基于QGraphicsItem类的一个子类,提供了更高级别的GUI元素,如按钮、复选框、滚动区域等。小部件可以像普通图形项一样添加到场景中,也可以嵌套其他小部件。 Graphics View框架的优势在于其高度的可定制性和灵活性。通过继承QGraphicsItem和QGraphicsWidget类,可以轻松地创建自定义的图形元素和GUI元素,并将其添加到场景中。同时,Graphics View框架还提供了方便的接口来实现拖放、动画、缩放、旋转等高级功能,使得开发者能够轻松地创建出具有高交互性的2D图形应用程序。
QT个人笔记的更多相关文章
- qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果
应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...
- Qt学习笔记-Widget布局管理
Qt学习笔记4-Widget布局管理 以<C++ GUI Programming with Qt 4, Second Edition>为参考 实例:查找对话框 包含三个文件,f ...
- QT学习笔记(一)——Helloworld
QT学习笔记(一)--Helloworld 一.调试的基本方法: Log调试法 --在代码中加入一定的打印语句 --打印程序状态和关键变量的值 断点调试法: --在开发环境中的对应代码行加上断点 -- ...
- Matlab+Qt开发笔记(一):matlab搭建Qt开发matlib环境以及Demo测试
前言 做一些数据处理软件,使用matlab文件,.mat文件. 准备条件 安装matlab2016,发现是vs 12(是vs2011版本),Qt5.9.3是支持vs 14(是vs2015版 ...
- QT学习笔记1
不准备用MFC了,想切换到QT.所以跟着网上的一个笔记学习. 1 开发环境是VS2008+QT4.7+VassistX 具体如何配置看这个帖子:http://qimo601.iteye.com/blo ...
- qt学习笔记(七)之数据库简介(所有支持数据库类型的列表)
笔者最近用Qt写公司的考勤机.本来要求是要基于frameBuffer下用自己开发的easyGUI来进行上层应用开发,但是考虑到easyGUI提供的接口不是很多,就考虑用Qt来开发,顺带练练手. 废话不 ...
- QT 学习笔记概述
以下笔记为在看书和实践的过程中的部分记录总结: 0. 窗口布局 1) 支持绝对布局和布局管理器布局; 2) 绝对布局不够灵活.无法自动调整大小,需要手动编写代码调整: 3) 布局管理器管理布局比较灵活 ...
- QT学习笔记(一)——ui的认识
////////////2015/08/06/////////////////// ///////////by xbw////////////////////////// //////////环境 Q ...
- Qt学习笔记(2)-利用StackWidget实现选项卡式页面
学习笔记第二篇,利用Qt实现选项卡式的页面,效果如图1.1-图1.3所示.程序实现的功能是通过点击状态栏实现不同页面的切换,实际上Qt中自带有Tab选项卡式的控件,本文利用StackWidge实现类似 ...
- 【Qt学习笔记】窗口部件整理
关于Qt中窗口部件的学习 今天开始学习Qt的窗口部件,领略一下Qt的神奇之处,记得2012年的那年冬天,我还学Java呢,现在基本上和Java说再见了,不过对于嵌入式的开发Qt还是举足轻重的,我想趁着 ...
随机推荐
- [WPF]将方法设为弃用
[System.Obsolete("这是一条提示信息,表示这个方法弃用了,使用此方法会有一条Warning信息")] private void SaveDataMessage(Sa ...
- 避免用Apache Beanutils进行属性的copy。why?让我们一起一探究竟
在实际的项目开发中,对象间赋值普遍存在,随着双十一.秒杀等电商过程愈加复杂,数据量也在不断攀升,效率问题,浮出水面. 问:如果是你来写对象间赋值的代码,你会怎么做? 答:想都不用想,直接代码走起来,g ...
- 根号分治简单笔记 | P3396 哈希冲突
简要题意 你需要维护一个长度为 \(n\) 的序列 \(v\),支持: A x y 求整个序列中,所有模 \(x\) 为 \(y\) 的下标的元素的值,即: \[\sum_{i=0}^{\lfloor ...
- group by 语句怎么优化?
一.一个简单使用示例 我这里创建一张订单表 CREATE TABLE `order_info` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `or ...
- NuxtJS踩坑日记,一步一步爬出我自己挖的坑。
NuxtJS 2 errors and 2 warnings potentially fixable with the `--fix` option. 第二种报错 Error: No build ...
- 【学习笔记】珂朵莉树(ODT)
珂朵莉树 \(\tt 0x00\) 起源 起源于 CodeForces 的一题 CF896C,当时出题人提供了这种做法,在随机数据下均摊复杂度比较优秀. 正统名字好像叫颜色段均摊,由于题目也得名于 \ ...
- java入门与进阶P-6.1+P-6.2
字符类型 字符型char在Java语言中占用 2 个字节,char类型的字面量必须使用半角的单引号括起来,取值范围为[ 0 - 65535 ],char 和 short 都占用 2 个字节,但是 ch ...
- Unity跑在Awake之前的方法
Unity跑在Awake之前的方法 一.前言 相信大家和小黑一样,在写项目的时候遇到过以下这中情况: ____两个脚本的Awake中,都有获取信息的函数被调用.可是A脚本在B脚本获取到信息之后,才可以 ...
- qt获取子控件坐标
QPoint pos = ui->m_blt->mapToGlobal(QPoint(0, 0)); 就可以了.
- 六、python基础知识之变量常量、索引取值和PEP8规范
目录 一.变量与常量 1.什么是变量? 2.什么是常量? 变量的基本使用 变量使用的语法结构与底层原理 变量名的命名规范和命名风格 变量的命名风格 常量的基本使用 二.索引取值 三.PEP8规范 1. ...