QCanvasItem类提供一个在QCanvas上的抽象图形对象。

各种QCanvasItem子类提供立即可用的行为。这个类是一个纯粹的抽象超类,它提供了在所有具体的canvas项目类中共享的行为。QCanvasItem不打算直接子类化。子类话一个他的子类更容易,QCanvasPolygonalItem (最常见的基类), QCanvasRectangle, QCanvasSprite, QCanvasEllipse or QCanvasText.

画布项通过构造函数添加到画布上。可以使用setCanvas()将项目移动到不同的画布上。

在show()函数被调用(或setVisible(TRUE))之后,以及在update()被调用之后,画布项就可以显示在画布上。画布只显示可见的项,并且只有在调用update()时才会显示。如果您创建画布时没有给构造函数传递宽度和高度参数,那么您还需要调用resize()函数。因为画布背景默认为白色,画布项也默认为白色,所以您需要改变颜色才能在画布上看到画布项。

一个QCanvasItem对象可以使用move(), moveBy(), setX(), setY() and setZ()函数在x,y,z方向上移动。一个画布项可以通过函数setAnimated()设置为运动状态, 并用函数setXVelocity() 和 setYVelocity()来设置x和y方向上的速度——调用setVelocity()可以实现同样的效果。使用collidesWith()函数来查看画布项是否会在下一次advance(1)上发生冲突,并使用collisions()来查看发生了什么冲突。

使用QCanvasSprite或您自己的QCanvasSprite子类来创建动画的画布,即随时间变化的画布。

画布项的大小可以使用函数boundingRect()得到。使用boundingRectAdvanced()查看下一个advance(1)调用后画布项的大小。

使用rtti()函数用来获得QCanvasItem子类的标识。函数canvas() 的作用是返回一个指向包含画布项的画布指针。

QCanvasItem提供了类似于QWidget中一个的函数:show()和isVisible()函数。

QCanvasItem还提供setEnabled()、setActive()和setSelected()函数;这些函数设置了相关的布尔值并导致重新绘制,但是它们所设置的布尔值并不在QCanvasItem中使用。您可以在子类中使用这些布尔值。

默认情况下,canvas项目没有速度,没有大小,也没有运动。Qt中提供的子类不会更改这些默认值,除非指定了它。

QCanvasItem介绍-QT3的更多相关文章

  1. Qt4与Qt3的主要不同

    Qt4与Qt3的主要不同 1)QT4 中提供了大量新控件,虽然它也保持了旧的控件,并命名为Qt3XXX,但是这样的控件没准在今后的哪个QT版本中就不被支持了,所以还是换吧,控件替换的 工作是巨大的,这 ...

  2. 第二章 Qt常用工具的介绍

    第二章 Qt常用工具的介绍 (1)No.1 qmake 相信编写过Makefile的开发人员,随着工程中源码的级数递增和以类型.功能.模块组织源码的子目录的增多,都不愿意重复机械地手工编写这个工程管理 ...

  3. QT4和QT3的区别

    著名的QT库前一阵子升级到4.xx版本了,我目前在开发的一个基于QT3的软件,由于受到QThread的各种困扰,因此打算尝试将代码升级到QT4, 但是当我实际开始升级工作后,才发现QT3和QT4的变化 ...

  4. yum与rpm的区别以及详细介绍

    rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装.查询.卸载.升级等工作.但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时. Yum(全称为 ...

  5. qt configure参数配置介绍

    ======================================全文是按照./configure -help来翻译的==================================== ...

  6. QT4与QT3的不同

    1)QT4中提供了大量新控件,虽然它也保持了旧的控件,并命名为Qt3XXX,但是这样的控件没准在今后的哪个QT版本中就不被支持了,所以还是换吧,控件替换的工作是巨大的,这些新的控件使用了新的方法.属性 ...

  7. shell脚本编程基础介绍

    Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...

  8. Linux基础教程 linux awk内置变量使用介绍

    awk是个优秀文本处理工具,可以说是一门程序设计语言.下面是兄弟连Linux培训 给大家介绍的awk内置变量. 一.内置变量表 属性 说明 $0 当前记录(作为单个变量) $1~$n 当前记录的第n个 ...

  9. CSS3 background-image背景图片相关介绍

    这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...

随机推荐

  1. Oracle在本地调试成功读取数据,但是把代码放到服务器读不出数据的解决方法。

    用MVC EF框架开发项目,数据库用的是Oracle,本地调试的时候一切正常,但是把代码编译之后放到服务器就会读不出数据. 原因:本地调试环境与服务器环境不一致. 办法:在服务器上装ODT.NET组件 ...

  2. COCOS学习笔记--关于使用cocostudio打安卓包

    我在之前的博客里也写到过,如今cocos引擎提供了一键打包.很方便. 今天正好做个測试,想用引擎的一键打包弄个apk的安卓包.以下就简介一下详细过程和自己的一些理解: 先说一下项目背景,因为我的电脑是 ...

  3. C++技术问题总结-第8篇 STL内存池是怎么实现的

    STL内存池机制,使用双层级配置器.第一级採用malloc.free,第二级视情况採用不同策略. 这样的机制从heap中要空间,能够解决内存碎片问题. 1.内存申请流程图     简要流程图例如以下. ...

  4. 详解Office Add-in 清单文件

    作者:陈希章 发表于2017年12月8日 前言 我们都知道,一个Office Add-in,最主要是由两个部分组成的:清单文件(manifest)和真正要用来执行的网站. 清单文件其实是一个标准的XM ...

  5. 动态生成表格的每一行的操作按钮如何获取当前行的index

    for(var i=0; i<10; i++) { $("#tableList").append( $("<tr>").append( $(& ...

  6. Django的设计模式

    MVC模式 MVC将应用程序分解为三个组成部分:mode(模型).view(视图).control(控制器),其中: M 管理应用程序的状态(通常存储到数据库中),并榆树改变状态的行为(或者叫&quo ...

  7. iOS 用户密码 数字字母特殊符号设置 判断

    //直接调用这个方法就行 -(int)checkIsHaveNumAndLetter:(NSString*)password{ //数字条件 NSRegularExpression *tNumRegu ...

  8. ABP .Net Core 部署到IIS 问题汇总

    在ABP官网创建一个.Net Core项目编译完成 1. 发布网站 2. IIS新建站点 目录指向发布的目录 3.安装WindowsHosting IIS安装服务器上安装DotNetCore.X.X. ...

  9. Run a task only once in (akka) cluster

    在stackOverflow网站上看到这一提问,下文是部分摘抄问题简述: Java cluster, run task only once We have a java process, which ...

  10. stack 的优势 - 每天5分钟玩转 Docker 容器技术(113)

    stack 将应用所包含的 service,依赖的 secret.voluem 等资源,以及它们之间的关系定义在一个 YAML 文件中.相比较手工执行命令或是脚本,stack 有明显的优势. YAML ...