关于c++课堂塔防大作业的一些头文件解释

QObject:
https://www.cnblogs.com/zhying13/p/4020075.html
QObject这个 class 是 QT 对象模型的核心,关于对象模型可以阅读C++对象模型详解,绝大部分的 QT 类都是从这个类继承而来。这个模型的中心特征就是一个叫做信号和槽(signaland slot)的机制来实现对象间的通讯,你可以把一个信号和另一个槽通过 connect(…) 方法连接起来,并可以使用disconnect(…) 方法来断开这种连接,你还可以通过调用blockSignal(…) 这个方法来临时的阻塞信号。对于信号和槽可以阅读Qt 信号和槽函数。
QPoint:
https://www.cnblogs.com/fuqia/p/8909153.html

QPoint 类代表一个坐标点,实现在 QtCore 共享库中。它可以认为是一个整型的横坐标和一个整型的纵坐标的组合。
构造
QPoint 类支持以下两种构造方式:
QPoint(); // 构造横纵坐标均为 0 的 QPoint 对象
QPoint(int x, int y); // 构造横纵坐标分别为 x 和 y 的 QPont 对象
属性
通过以下成员函数可得到 QPoint 对象中的横纵坐标的引用
int &rx(); // 得到横坐标的引用
int &ry(); // 到到纵坐标的引用
注意这些引用都不是只读的,也就是说可以通过它们直接修改 QPoint。
QSize:
https://blog.csdn.net/HMSIWTV/article/details/7559927
QSize 类代表一个矩形区域的大小,实现在 QtCore 共享库中。它可以认为是由一个整型的宽度和整型的高度组合而成的。
构造
QSize(); // 构造一个非法的 QSize 对象
QSize(int width, int height); // 构造宽度为 width、高度为 height 的 QSize 对象 属性
以下成员函数可以得到 QSize 对象中宽度和高度的引用:
void setWidth(int width); // 设置宽度
void setHeight(int height); // 设置高度
QPixmap:
https://blog.csdn.net/qq_33266987/article/details/73187140
QPixmap可以接受一个字符串作为一个文件的路径来显示这个文件,比如你想在程序之中打开png、jpeg之类的文件,就可以使用 QPixmap。使用QPainter的drawPixmap()函数可以把这个文件绘制到一个QLabel、QPushButton或者其他的设备上面。QPixmap是针对屏幕进行特殊优化的,因此,它与实际的底层显示设备息息相关。注意,这里说的显示设备并不是硬件,而是操作系统提供的原生的绘图引擎。所以,在不同的操作系统平台下,QPixmap的显示可能会有所差别。
QpropertyAnimation:
https://www.cnblogs.com/lvdongjie/p/4366092.html
QPropertyAnimation Class 是一个控制动画效果的类,诞生自 Qt 4.6 版本。 该类继承自 QVarianAnimation,并支持其它基类相同的动画类,例如:QAnimationGroup 动画组类,该类仅支持继承自 QObject 类的窗口部件。
QTimer:
http://www.kuqin.com/qtdocument/qtimer.html
QTimer类提供了定时器信号和单触发定时器
QTimer类提供了定时器信号和单触发定时器。
它在内部使用定时器事件来提供更通用的定时器。QTimer很容易使用:创建一个QTimer,使用start()来开始并且把它的timeout()连接到适当的槽。当这段时间过去了,它将会发射timeout()信号。
注意当QTimer的父对象被销毁时,它也会被自动销毁。
QList:
1、QList是一种表示链表的模板类。

2、QList是Qt的一种泛型容器类。它以链表方式存储一组值,并能对这组数据进行快速索引,还提供了快速插入和删除等操作。

3、QList、QLinkedList和QVector提供的操作极其相似:

  • 对大多数操作来说,我们用QList就可以了。其API是基于索引(index)的,因此用起来比QLinkedList更方便(QLinkedList的API是基于迭代器的)。QList比QVector更快,这是由它们在内存中的存储方式决定的。
    QRect:
    https://blog.csdn.net/qian_f/article/details/8797778
    代表一个矩形区域,实现在QtCore库,是一个QPoint对象和一个QSize对象的组合,QPoint对象是它的左上角的坐标,QSize对象则是它的大小
    构造:
    无参数的构造函数QRect()将构造一个高度和宽度都为0的矩形区域,
    QRect(const QPoint &topLeft, const QSize &size);//构造一个左上角坐标为topLeft,大小为size的矩形区域,
    QRect(int x, int y, int width, int height);等价于:QRect(QPoint(x, y), QSize(width, height));//构造一个左上角横纵坐标分别为x和y,宽度为width,高度为height的矩形
    QXmlStreamReader:
    https://blog.csdn.net/liang19890820/article/details/52808829
    QXmlStreamReader 类提供了一个快速解析器,用于通过简单的流 API 读取格式良好的 XML。与之相对应的是 QXmlStreamWriter(写入 XML)。

相比较 Qt 自己的 SAX 解析器(见 QXmlSimpleReader),QXmlStreamReader 更快,更方便。某些情况下,在使用 DOM 树(见 QDomDocument)的应用程序中,它也可能是一个更快,更方便的替代方案。

QXmlStreamReader 可以从 QIODevice(见 setDevice())或原始 QByteArray(见 addData())中读取数据。
QIODevice:
https://blog.csdn.net/ZefinNg/article/details/85227920
Qt中提供了QFile进行文件操作,QFile中有open()函数。
[virtual] bool QFile::open(OpenMode mode),其中,mode指的是打开的方式,有QIODevice::ReadOnly,QIODevice::WriteOnly,QIODevice::ReadWrite,QIODevice::Text等打开方式。
Qvariant:
https://blog.csdn.net/woniulx2014/article/details/82752835
QVariant可以存储各种数据类型,QVariant行为类似于C/C++的union, 但在Qt中比union强大很多, QVariant内置支持所有QMetaType::Type里声明的类型如:int,QString,QFont,QColor等,甚至QList,QMap<QString, QVariant>等组成的任意复杂类型。简单的说QVariant可以存储任意数据类型,表现的类似弱语言,如JS中的var如,包括容器类型的值,如QStringlist。Qt的很多功能都是建立在QVariant类的基础之上的,如Qt对象属性及数据库功能等,在代码片段中主要分两种情况讨论QVariant的应用:
Qmap:
https://blog.csdn.net/u010830200/article/details/78428147
QMap<Key,T>是Qt容器类型的一种,它通过(Key, value)存储一对值,并通过Key可以查找与之关联的value的值。

QMap和QHash是很相似的,不同的地方是:

  • QHash的查找速度比QMap要快很多。
  • 在对QHash进行迭代时,这些项是任意排序的。在QMap中,项总是按键排序。
  • QHash的关键类型必须提供运算符==()和全局QHash(key)函数。QMap的关键类型必须提供操作符<(),以指定全序顺序。从Qt 5.8.1开始,使用指针类型作为键也是安全的,即使底层操作符<()不提供全序关系。
    QmouseEvent:
    https://blog.csdn.net/qq_41672557/article/details/80306282
    鼠标无论是点击,移动,双击,松开都由鼠标的左右键区别而有区别,所以,严谨的来使用就是如mousePressEvent一样来通过按下的键来区别对待,从而达成不同的需求;

void MainView::mousePressEvent(QMouseEvent *e)

{

if(e->button()==Qt::RightButton)//鼠标右击
{
     qDebug()<<"右"<<e->pos();
}
if(e->button()==Qt::LeftButton)//鼠标左击
{
     qDebug()<<"左"<<e->pos();
}
if(e->button()==Qt::MidButton)//滚轮按下
{
     qDebug()<<"中"<<e->pos();
}

}

void MainView::mouseMoveEvent(QMouseEvent *e)
{
//无论按下的是哪个键,只要有按键按下并移动就会触发mouseMoveEvent
qDebug()<<“移动”;
}

void MainView::mouseReleaseEvent(QMouseEvent *e)
{
//松开鼠标时触发,无论按下的是哪个按键
qDebug()<<“离开”;
}

void MainView::mouseDoubleClickEvent(QMouseEvent *e)
{
//双击鼠标时触发,无论按下的是哪个按键
qDebug()<<“双击”;
}
void MainView::wheelEvent(QWheelEvent *e)
{
// 当滚轮远离使用者时
if(e->delta() > 0){
qDebug()<<“1”;
}else{//当滚轮向使用者方向旋转时
qDebug()<<"-1";
}
}

扩展: QMouseEvent *e;

e->pos(),获取鼠标位置

e->button(),获取按下的是哪个键

e->delta()==120/-120
QtGlobal:
http://c.biancheng.net/view/1827.html
头文件包含了 Qt 类库的一些全局定义,包括基本数据类型、函数和宏,一般的 Qt 类的头文件都会包含该文件,所以不用显式包含这个头文件也可以使用其中的定义。
头文件包含一些常用函数的定义,这些函数多以模板类型作为参数,返回相应的模板类型,模板类型可以用任何其他类型替换。若是以 double 或 float 类型数作为参数的,一般有两个参数版本的同名函数,如qFuzzyIsNull(double d) 和 qFuzzyIsNull(float f)。

表 2 是 中常用的全局函数定义,列出了函数的输入和输出参数(若存在 double 和 float 两种参数版本,只列出 double 类型参数的版本)。
QMessageBox:
https://www.cnblogs.com/grandyang/p/4296395.html
在Qt中经常需要弹出窗口,QMessageBox可以实现此功能,一共有三种窗口,information, question, 和 warning,critical, about分别对应感叹号,问号和叉号等等,使用方法很简单,一共有三个参数,第一个是父窗口句柄,剩下两个分别为窗口名称和显示内容,显示内容为QString类型。如下所示:QMessageBox::information(this, tr(“Title”), tr(“Content”));

QMessageBox::question(this, tr(“Title”), tr(“Content”));

QMessageBox::warning(this, tr(“Title”), tr(“Content”));

QMessageBox::critical(this, tr(“Title”), tr(“Content”));

QMessageBox::about(this, tr(“Title”), tr(“Content”));
QtDebug:(=QDebug)
https://blog.csdn.net/u012151242/article/details/79814909

qDebug的打印信息,主要是为了方便调试程序时尽快找到bug,所以当我们在发布版本时,需要去掉debug打印,一方面可以加快我们程序的执行速度,另一方面可以减小我们程序的体积。

在我做的项目中有很多人是采用加注释的方法来去掉打印的,虽然这个方法可行,但不是很有效的,如果哪天程序出了bug还需要再把打印信息去掉注释,这是很麻烦的。当然,将日志分级也是个很不错的想法。

为了解决这个问题,你只需要在你的pro文件里加上一行预定义宏即可。

DEFINES += QT_NO_DEBUG_OUTPUT

在你的程序添加上这个宏,重新编译运行程序,看看你的打印信息是不是都不见了呢,哈哈,这是不是很方便啊,Qt就是这么的懂你。
setupUi(this):
setupUi(this)是由.ui文件生成的类的构造函数,这个函数的作用是对界面进行初始化,它按照我们在Qt设计器里设计的样子把窗体画出来,
把我们在Qt设计器里面定义的信号和槽建立起来。
也可以说,setupUi 是我们画界面和写程序之间的桥梁。

顺带一提塔防游戏中的config文件夹中plist文件存储的是波数信息等,需要用特制的应用打开
plist editor即可(希望大家不要下到病毒)
这个网址的可以用
http://down-ww3.7down.net/pcdown/soft/xiazai/plisteditor_setup.rar

顺带一提给的代码来自于
https://blog.csdn.net/satanzw/article/details/10418063

希望大家编程愉快

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值