开课吧-智能物联网训练营Day1-使用QT简单的构建图形程序分享与总结

   日期:2020-05-29     浏览:270    评论:0    
核心提示:开课吧-智能物联网训练营Day1-使用QT简单的构建图形程序分享与总结文章目录开课吧-智能物联网训练营Day1-使用QT简单的构建图形程序分享与总结1. 环境介绍2. 实现背景图2.1 建立目录结构以下步骤会有所省略。总之QT操作比一般的IDE感觉还简单一些。建立一个Qt Widgets Application![在这里插入图片描述](https://img-blog.csdnimg.cn/20200527062206286.png?x-oss-process=image/watermark,type嵌入

开课吧-智能物联网训练营Day1-使用QT简单的构建图形程序分享与总结

文章目录

  • 开课吧-智能物联网训练营Day1-使用QT简单的构建图形程序分享与总结
    • 1. 环境介绍
    • 2. 实现背景图
      • 2.1 建立目录结构
      • 2.2 加入一点点代码加入背景图
    • 3 封装

Day1开发部分可以分为两个部分,一个是实现了背景图;另一个是对自定义的view和scene做了封装。
我没看回放,嗯。主要是因为懒。如有错误,敬请指正。

1. 环境介绍

Qt 5.14.2
windows 10 当然是最新的。

2. 实现背景图

2.1 建立目录结构

以下步骤会有所省略。总之QT操作比一般的IDE感觉还简单一些。
建立一个Qt Widgets Application

避雷:不要把项目放到中文目录下。否则会无法编译。
这里需要更改一下。类名改为MainWidget。基类选择QWidget。
注意:底下的框选取消掉
其实不取消也没啥。。我当时就没注意~

选择运行平台。随便选,毕竟没几个人还在用32位系统吧?建议只选一个。我比较喜欢先进的东西,所以64。

至此,一个项目建好了。运行效果如下

下面开始整理目录结构。
打开项目文件夹(你之前保存的地方)
建立src文件夹,把C++源文件和头文件拖到src里。
不要把pro和user文件拖进去了。
再把老师发的code下的代码文件全部复制到src下。把images和audio复制到项目目录(pvz)下。
最终的结果如下:

打开QT,会弹框,closeAll即可。

右键上图箭头指向处,添加现有文件,把src下的所有文件使用ctrl+a选中。加入到项目中。。
打开你的pvz.pro项目文件:

可以看到有些过时的信息。即不是src下的文件。删了。结果如下:

下一步添加资源文件。
在上一步添加现有文件的选项(右键项目弹出)中,还有一个是Add new。

选中Qt。Qt Resource File。Choose
文件名填pvz。

右键上图的文件。Add existing directory。把audio和images勾上。然后弹框,选Yes to all。

至此项目结构完毕。

2.2 加入一点点代码加入背景图

mainwidget.cpp的代码如下:

#include "mainwidget.h"
//注意包含以下三个个头文件。老师把后二个放在了mainwidget中了。无所谓。哪里需要哪里搬,反正不会重复包含的。
#include "ImageManager.h"
#include <QGraphicsView>
#include <QGraphicsPixmapItem>


MainWidget::MainWidget(QWidget *parent)
    : QWidget(parent)
{
		
       //建立gameView。注意传入this指针。
       QGraphicsView *gameView = new QGraphicsView(this);

       QGraphicsScene *gameScene = new QGraphicsScene();
	   gameView->setScene(gameScene);
       QGraphicsPixmapItem *backgroundItem = new QGraphicsPixmapItem(gImageCache->load("interface/background1.jpg"));
       gameScene->addItem(backgroundItem);
}

MainWidget::~MainWidget()   
{
//可以把上面的析构了。不过老师没提。小细节。。
}


注意包含QGraphicsPixmapItem!!
为什么要这么加?这代码啥意思?
View是窗口,Scene是游戏界面?item是界面中的元素。
窗口一般是恒定的,界面和元素通常都会变化。嗯。总之我还没来得及找博客学习。所以具体是不是这个逻辑还有待查明~。
然后ImageManager还需要在main.cpp初始化。

#include "mainwidget.h"

#include <QApplication>
#include "ImageManager.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //初始化代码。
    InitImageManager();
    MainWidgt w;
    w.show();
    return a.exec();
}

看看源码就挺好懂的。运行效果:

嗯。为了增加宽高。可以在11行,gameView初始化后加gameView->setGeometry(0, 0, 800, 600);

至此实现部分没了。下面是对gameView和gameScene的封装~。我也没听多太仔细。方法是很简单的。写两个子类代表我们自定义的view和scene。

3 封装

点source啥的。add new。选择c++\c++ class。


第一个GameView类。注意大小写。包括进去Qwdiget和添加Q_OBJECT。基类设置为QGraphicsView。
同样的操作添加一个GameScene类。基类改为QGraphicsScene。其他设置和上面一致。
注意导入头文件。QT不够智能。不会自动导入。不过可以右键出错的地方,refactor。如果有include的选项,就选吧。挺方便的。
点开GameView的头文件。给构造函数添加一个QWiget *parent=nullptr的参数。

源文件当然也得更改。注意源文件别把默认值复制过去了。然后使用初始化列表初始化父类。就酱。然后

然后加入到MainWidget中。剩下的步骤我比较自由发挥了。。

然后在cpp文件中实现。

这样。在GameVIew的构造函数中就可以设置窗口的大小:


最终效果不变~

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服