1.QTå¦ä½å®ç°QGraphicsitem 对象itemsç翻转?源码
2.å¦ä½å¨qmlä¸ä½¿ç¨qgraphicsitem
3.Qt 编译缺少QGraphicsItem类
4.Qt:常见的 QGraphicsItem
5.用QT实现一个跨平台小游戏
6.Qt图形视图QGraphicsItem
QTå¦ä½å®ç°QGraphicsitem 对象itemsç翻转?
A negative scale means the item will be mirrored.
使ç¨scale()å½æ°ï¼æ¯ä¾å¡«åè´å¼ï¼å°±å¯ä»¥æ°´å¹³éå翻转æè ç«ç´éå翻转ã
å¦ä½å¨qmlä¸ä½¿ç¨qgraphicsitem
import Charts 1.0
import QtQuick 1.0
Item {
width: ; height:
PieChart {
id: aPieChart
anchors.centerIn: parent
width: ; height:
color: "red"
onChartCleared: console.log("The chart has been cleared")
}
MouseArea {
anchors.fill: parent
onClicked: aPieChart.clearChart()
}
Text {
anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: }
text: "Click anywhere to clear the chart"
}
}
File:SimpleChart2.png
为c++类添å 被è°ç¨çæ¹æ³åä¿¡å·
ä¸é¢æ们就æ¥çä¸ä¸å¨C++çç±»ä¸æä»¬å ·ä½åºè¯¥æä¹åï¼
class PieChart : public QDeclarativeItem
{
...
public:
...
Q_INVOKABLE void clearChart();
signals:
void chartCleared();
...
};
使ç¨Q_INVOKABLE 使å¾Qt Meta-Object ç³»ç»å¯ä»¥è®¿é®å°clearChart() æ¹æ³ï¼äºæ¯QMLä¹å¯ä»¥è®¿é®å°è¿ä¸ªæ¹æ³äºã请注æï¼ç±äºæ§½å½æ°ï¼slotsï¼ä¹å¯ä»¥è¢«QMLè°ç¨ï¼å æ¤clearChart() ä¹å¯ä»¥è¢«å£°æ为ä¸ä¸ªQt slot èä¸ä½¿ç¨Q_INVOKABLEãè¿ä¸¤ç§æ¹å¼é½æ¯ææçã
clearChart() æ¹æ³å°ç»å¶æå½¢å¾çç»ç¬é¢è²è®¾ç½®æQt::transparentï¼éæï¼ï¼å¹¶éç»æå½¢å¾ï¼æåååºchartCleared()ä¿¡å·ï¼
void PieChart::clearChart()
{
setColor(QColor(Qt::transparent));
update();
emit chartCleared();
}
è¿è¡ç¨åº
ç°å¨æ们å¯ä»¥å¯å¨è¿ä¸ªåºç¨ç¨åºå¹¶ç¹å»å ¶çªå£åºåï¼äºæ¯çªå£ä¸çæå½¢å¾å°±æ¶å¤±äºï¼å¹¶ä¸åºç¨ç¨åºæå¦ä¸è¾åºï¼
The chart has been cleared
æ¨å¯ä»¥å¨ Qt ç examples/tutorials/extending/chapter2-methodsç®å½ä¸æ¾å°è¿ä¸ªç¨åºçå®æ´ä»£ç ã
Qt 编译缺少QGraphicsItem类
看来你是刚接触Qt不久啊,呵呵,源码QGraphicsItem 是源码Qt中很重要的一个类,哪个版本都不会少此类的源码(包括最新的Qt4.7.2)。注意编译项目时加上QtGui,源码因为这个类属于Gui模块。源码激活码源码
Qt:常见的源码 QGraphicsItem
QGraphicsItem 类是 QGraphicsScene 中所有 item 的基类,用于编写自定义项目。源码它提供几何形状定义、源码碰撞检测、源码绘制实现和事件处理程序,源码是源码 Qt 图形视图框架的一部分。常见的源码 QGraphicsItem 包括:
QGraphicsSimpleTextItem: 简单的文本标签项
QGraphicsTextItem: 格式化的文本项
QGraphicsLineItem: 直线项
QGraphicsPixmapItem: 图像项
QGraphicsRectItem: 矩形项
QGraphicsEllipseItem: 椭圆项
QGraphicsPathItem: 路径项
QGraphicsPolygonItem: 多边形项
QGraphicsSimpleTextItem 提供了简单的文本标签项,允许在 QGraphicsScene 中添加。源码设置文本可通过构造函数传递 QString,源码或在之后使用 setText()。设置文本填充色可通过 setBrush()。此项支持填充和轮廓,setBrush() 用于设置填充,setPen() 用于设置轮廓。只需调用 setBrush() 即可绘制简单文本,无需设置画笔。QGraphicsSimpleTextItem 提供了合理的 boundingRect()、shape() 和 contains() 实现,通过 setFont() 可设置字体。
QGraphicsTextItem 提供格式化的文本项,允许添加到 QGraphicsScene 中。设置文本可通过构造函数传递 QString,或调用 setHtml()/setPlainText()。此项提供合理的 boundingRect()、shape() 和 contains() 实现,并可通过 setFont() 设置字体。使 item 可编辑可通过调用 setTextInteractionFlags() 设置 Qt::TextEditorInteraction 标志。设置首选文本宽度使用 setTextWidth(),android在线音乐播放器源码获取使用 textWidth()。为了在中心对齐 HTML 文本,必须设置文本宽度。默认情况下,QGraphicsTextItem 接受 hover 事件,可通过 setAcceptHoverEvents() 更改此值。
QGraphicsLineItem 提供直线项,可通过构造函数传递 QLineF 或调用 setLine() 设置直线。默认直线为黑色,宽度为 0,可通过 setPen() 更改。提供合理的 boundingRect()、shape() 和 contains() 实现,paint() 函数使用关联的画笔绘制直线。
QGraphicsPixmapItem 提供图像项,可通过构造函数传递 QPixmap 或调用 setPixmap() 设置图像。提供合理的 boundingRect()、shape() 和 contains() 实现,图像在 (0, 0) 坐标处绘制,通过 offset() 返回。设置变换模式使用 setTransformationMode(),默认为 Qt::FastTransformation。获取当前转换模式使用 transformMode()。注意,无效矩形的呈现是未定义的,使用 QRectF::normalized() 创建标准化矩形。
QGraphicsRectItem 提供矩形项,通过构造函数传递 QRectF 或调用 setRect() 设置矩形。提供合理的 boundingRect()、shape() 和 contains() 实现,paint() 函数使用关联的画笔和画刷绘制矩形。
QGraphicsEllipseItem 提供椭圆项,表示带有填充和轮廓的asp登陆界面源码椭圆。通过构造函数传递 QRectF 或调用 setRect() 设置椭圆。提供合理的 boundingRect()、shape() 和 contains() 实现,paint() 函数使用关联的画笔和画刷绘制椭圆。
QGraphicsPathItem 提供路径项,通过构造函数传递 QPainterPath 或调用 setPath() 设置路径。提供合理的 boundingRect()、shape() 和 contains() 实现,paint() 函数使用关联的画笔和画刷绘制路径。
QGraphicsPolygonItem 提供多边形项,通过构造函数传递 QPolygonF 或调用 setPolygon() 设置多边形。提供合理的 boundingRect()、shape() 和 contains() 实现,paint() 函数使用关联的画笔和画刷绘制多边形。
用QT实现一个跨平台小游戏
用QT实现跨平台小游戏
该教程展示了如何利用Qt跨平台应用程序开发框架来创建一个基础的小游戏。首先,介绍Qt中的三个主要类:QGraphicsScene(场景)、QGraphicsView(视图)和QGraphicsItem(图元),并解释它们之间的关系。之后,通过新建Qt Widgets工程并导入素材,逐步实现游戏核心功能。接着,详细说明如何初始化视图、设置视图的标题、位置、宽高及图标。此过程最终显示一个空白窗口作为游戏的框架。
接着,教程介绍了如何实现游戏角色“接元宝的兜”。兜通过继承QGraphicsPixmapItem类创建,并在构造函数中设置路径和显示场景。通过计算兜的discuz 源码分析与插件开发实例进阶初始位置,使其位于场景底部中央。同时,重写keyPressEvent方法来控制兜的左右移动,确保其边界在游戏区域内。通过调整移动速度,实现游戏角色的互动。
为了增加游戏趣味性,实现角色“元宝”的随机掉落。通过定时器生成元宝,并添加到场景中。为确保元宝随机分布,设置其初始位置为Y轴为0,X轴在场景宽度内随机生成。同时,维护一个列表记录每个元宝的位置,以便后续刷新和移动。此过程涉及定时器触发时机的管理,确保游戏流畅进行。
最后,教程聚焦于计算玩家得分的逻辑。通过collidingItems函数获取与兜碰撞的图元,即被接住的元宝。在每次刷新时,移除这些元宝并计算分数,实现游戏的互动反馈。至此,游戏的核心功能基本完成。
完成游戏开发后,通过将Qt工程编译为release版本,生成可执行文件(exe)。将exe文件放置于空目录中,并使用相应的命令行工具执行windeployqt命令,完成资源打包。后台登陆界面源码整个过程涉及源码管理、资源优化和打包部署,确保游戏能够在不同平台下顺利运行。
通过上述步骤,读者能够掌握使用Qt开发跨平台游戏的基本流程,从游戏框架搭建、角色实现到得分计算和最终打包部署,全面了解游戏开发的核心环节。
Qt图形视图QGraphicsItem
QGraphicsItem基类是QGraphicsScene中所有图形项的基础。
它提供轻量级基础,定义项的几何体、冲突检测、绘制实现和事件交互。
Qt提供标准图形项,包括椭圆、线、路径、、多边形、矩形和文本标签。
项的几何信息基于局部坐标系,位置pos()在父坐标中。
可见性通过setVisible()控制,禁用项则使用setEnabled()。
选择由场景切换实现,可见性和启用性默认为是。
boundingRect()用于确定项索引、剔除不可见项、绘制重叠项区域及冲突检测。
改变几何图形前需调用prepareGeometryChange(),保持项不变性。
碰撞检测通过shape()和collidesWithItem()完成,shape()返回项准确轮廓。
项目可以包含子项,位置由父项的局部坐标决定,变换从父项累积。
变换包括旋转、缩放,通过setRotation()、setScale()、setTransform()等方法实现。
变换顺序固定:基本变换、列表应用、旋转、缩放。
QGraphicsView调用paint()绘制项内容,根据可见性计划重新绘制。
项按堆叠顺序绘制,堆叠基于添加顺序,使用setZValue()设置顺序。
事件通过sceneEvent()接收,常见事件由方便处理程序处理。
事件筛选器可安装到其他项目,使用sceneEventFilter()接收筛选事件。
使用setData()和data()存储和获取自定义数据,不受Qt影响。
QT中GraphicsView编程
QGraphicsScene是Qt库中的一个关键组件,用于在2D屏幕上展示各种图形元素,如线条、三角形、文本、自定义图元等。它作为不可见的容器,与QGraphicsView协同工作,展示场景内容。场景分为图元层、前景层和背景层,绘制顺序从背景层开始,依次是图元层和前景层。场景还负责事件传播,包括鼠标、键盘和悬停事件。事件处理包括焦点管理、鼠标获取、拖拽事件、索引算法、边界矩形设定以及图元查找。自定义QGraphicsItem需要继承QGraphicsItem并重写boundingRect()和paint()函数。画图通过paint()函数完成,而事件处理则通过sceneEvent()函数进行。排序通过设置zValue()和调用stackBefore()来实现。动画效果则可在场景或视图中实现。移动图元时,使用advance()槽函数控制图元的移动。图元支持坐标转换,包括旋转、缩放等,转换结果取决于应用顺序。主要成员函数如itemChange()用于响应图元状态变化,setFlag()设置图元属性。QGraphicsView作为视图窗口部件,与QGraphicsScene协同展示内容,处理鼠标、键盘事件,支持自定义视图、场景和图元。
在Qt中,通过创建自定义的视图、场景和图元,用户可以实现高度定制的图形界面。自定义视图允许用户设置界面的交互模式,例如拖拽操作;自定义场景扩展了事件处理和排序逻辑;自定义图元则提供个性化的绘制和交互方式。Qt的学习路线包括掌握QGraphicsScene、QGraphicsView和QGraphicsItem的基本用法,理解它们之间的协作关系,以及深入自定义这些组件以满足特定应用需求。这通常涉及了解事件处理、索引算法、坐标转换、图元查找等核心概念,以及如何通过继承和重写方法来扩展Qt提供的基础功能。
Qt 图形视图框架——QGraphicsItem
Qt图形视图框架提供了强大的功能用于处理2D图形绘制和管理,尤其在需要动态地处理多个图形并监控其行为时。核心组件包括QGraphicsScene(场景)和QGraphicsView(视图)。
场景用于管理多个图形项(如矩形、椭圆、文本等),而视图则关联场景,使得场景中的所有图形可视化。通过使用这个框架,可以实现图形的缩放、旋转、拖动、叠加、碰撞检测等功能,非常适合用于文档、绘图或任何需要图形动态交互的应用。
为了更直观地展示图形视图框架的应用,下面给出一个简单示例。首先,创建场景、添加矩形图形项,并将视图关联到场景上。运行程序后,可以看到场景中的图形被可视化,并且具备基本的交互操作。
在实际应用中,通过继承QGraphicsItem类可以实现自定义的图形项。为了完成自定义图形项,需要实现boundingRect()和paint()两个纯虚函数,前者定义图形的绘制范围,后者用于绘制图形项。通过实现这些函数,可以创建如圆、三角形或其他自定义形状的图形项,并实现其特定的绘制逻辑。
增加光标提示功能可以提升用户体验。通过设置QCursor,可以更改光标样式,并使用setToolTip添加提示信息。在构造函数中添加相关代码,可以实现更加人性化的交互体验。
拖放操作是图形交互中常见且实用的功能。通过在图形项中实现鼠标事件,可以实现拖动和接收拖放数据的功能。源图形项和目标图形项需要进行相应的设置,例如设置接受拖放数据(setAcceptDrops(true))和实现拖放事件处理函数。
键盘事件和鼠标事件的集成使图形项具有更丰富的交互能力。键盘事件可以通过实现keyPressEvent函数来实现特定的响应,如图形项的移动。鼠标事件可以用于实现点击响应、拖动等功能,通过定义适当的方法和设置图形项的可移动属性,可以灵活地控制图形项的交互行为。
碰撞检测功能是图形交互中的重要组成部分,用于实现图形间的相互作用和反应。QGraphicsItem类提供了collidingItems函数,用于返回与当前图形项冲突的所有项目列表。通过设置或重新实现shape函数,可以确保碰撞检测准确无误地识别图形项的真实形状,从而提高碰撞检测的精度和效率。
图形项的移动控制在Qt图形视图框架中也得到了充分支持。通过实现advance(int phase)函数,可以实现图形项的自动移动,如定时移动或根据特定规则改变位置。此外,通过使用QGraphicsItemAnimation和QTimeLine,可以为图形项添加动画效果,实现动态变化,如旋转、缩放、移动等。
Qt图形视图框架提供了丰富的功能和API,能够帮助开发者快速构建具有复杂图形交互功能的应用程序。通过对图形项的自定义、交互事件的处理、碰撞检测的实现以及动画效果的添加,可以创建出功能强大、用户体验优秀的图形应用。