当前位置: 首页 > news >正文

【qt】项目移植

项目移植

  • 一.前言
  • 二.同名问题
  • 三.具体操作
    • 1.修改文件名
    • 2.修改类名
    • 3.修改一些不能自动改的名
    • 4.修改.ui文件
    • 5.删除原来自动生成的ui_xxx.h文件
    • 6.修改头文件
  • 四.导入项目
  • 五.使用导入的项目
  • 六.项目建议

一.前言

终于概率论考完了,有时间了,接着上个项目,我们继续来完成我们的多窗口开发,但是这次,我们要将上上个项目的Mainwindow的窗口移植过来.所以这节课最重要的知识点是如何移植一个项目.

二.同名问题

当我们进行移植的时候,会有一个致命的问题那就是文件同名的问题,所以我们可以先将文件名修改好,再进行导入.
修改文件名,可不是你想的那么简单,毕竟有好多代码是qt自动生成的,那么修改就会有许多的细节!

三.具体操作

1.修改文件名

这就是咱们上上个项目:
在这里插入图片描述
同名:
在这里插入图片描述
所以不能进行直接的导入,姚先进行修改!
在这里插入图片描述
我就修改成了2
在这里插入图片描述

2.修改类名

进入头文件中去修改类名
在这里插入图片描述
在这里插入图片描述

3.修改一些不能自动改的名

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.修改.ui文件

打开文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.删除原来自动生成的ui_xxx.h文件

在构造文件中就原来的这个自动生成的删除
在这里插入图片描述

6.修改头文件

在这里插入图片描述
然后敲一下锤子大功告成!
在这里插入图片描述
可以运行了:
在这里插入图片描述

四.导入项目

将这12个文件进行复制
在这里插入图片描述
复制到目标目录:
在这里插入图片描述
对项目添加现有文件
在这里插入图片描述
导入成功;
在这里插入图片描述

五.使用导入的项目

包含导入的头文件:
在这里插入图片描述
但是用不了
在这里插入图片描述
因为预处理就没有包含进去,所以我们这里也需要进行修改!
在这里插入图片描述
嵌入MainWindow的完整代码:

void MainWindow::on_action_Windows_triggered()
{MainWindow2*window=new MainWindow2(this);window->setAttribute(Qt::WA_DeleteOnClose);int ret=ui->tabWidget->addTab(window,QString::asprintf("窗口%d",ui->tabWidget->count()+1));ui->tabWidget->setCurrentIndex(ret);
}

运行结果:
在这里插入图片描述
但是我们的图片没有了,对action进行添加图片!
在这里插入图片描述
但是当我添加完图片的时候又报错了
在这里插入图片描述
这个报错的类型我能应该要记住,看到这个incomplete type我们应该就要想到ui文件的问题了
果不其然,进去修改为Mainwindow2
在这里插入图片描述
当我们修改完会出现:
在这里插入图片描述
点击Yes to All
OK,就有咱们的图片了
在这里插入图片描述

哈哈,独立的窗口就很简单了!

void MainWindow::on_action_WindowsIndent_triggered()
{MainWindow2*window=new MainWindow2(this);window->setAttribute(Qt::WA_DeleteOnClose);window->setWindowTitle("基于Mainwindow的独立窗口");window->show();//非模态的进行显示
}

运行结果:
在这里插入图片描述
这样,我们就完成了,哈哈哈!

六.项目建议

回到最开始,我们为什么要修改名字,导致这么多繁琐的步骤,因为我们的项目文件同名了,都是Mainwindow,所以我们必须进行修改!
所以说,当我们创建一个项目是尽量不要使用默认的类名字,方便后续的移植操作!
再说说多窗口开发,有没有感觉很厉害,可以无限套娃,mainwindow窗口里面有mainwindow窗口!

所以学到后期,可以尽情的发挥出您的想象力!

OK,就到这里了,拜了个拜!

平静的湖水不显波纹,稳定的情绪彰显智慧。

相关文章:

  • elk:使用filebeat采集日志发送到kafka
  • Java装饰器模式,装饰器模式通常通过创建一个接口和一个或多个实现了该接口的类来开始,然后创建装饰器类,这些类也实现了相同的接口
  • MC联机无法连接到服务器怎么解决
  • 【WRF理论第二期】运行模型的基础知识
  • 路由懒加载
  • VL27 不重叠序列检测
  • harbor -- docker私有仓库安装配置
  • 基于SpringBoot+Vue二手家电管理平台设计和实现(源码+LW+调试文档+讲解等)
  • 【再探】Java—Java 沙箱机制与类加载器
  • STM32远程更新
  • Docker的部署与基本使用
  • $nextTick的使用场景介绍
  • Python使用rosbag使用getattr只能获取一层的数据,不能直接获取多层数据例如 a.b.c.d。使用for range写一个递归用来获取多层数据
  • SmartEDA:革新电路设计,体验前所未有的创新乐趣!
  • CVE-2022-4230
  • Angular数据绑定机制
  • CentOS7 安装JDK
  • Hexo+码云+git快速搭建免费的静态Blog
  • Java Agent 学习笔记
  • java多线程
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Promise面试题2实现异步串行执行
  • tab.js分享及浏览器兼容性问题汇总
  • 分享一份非常强势的Android面试题
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 什么是Javascript函数节流?
  • 思否第一天
  • MyCAT水平分库
  • puppet连载22:define用法
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (06)金属布线——为半导体注入生命的连接
  • (TOJ2804)Even? Odd?
  • (zt)最盛行的警世狂言(爆笑)
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (四)Android布局类型(线性布局LinearLayout)
  • ***测试-HTTP方法
  • ../depcomp: line 571: exec: g++: not found
  • .NET C# 使用GDAL读取FileGDB要素类
  • .NET CLR Hosting 简介
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET/C# 的字符串暂存池
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .Net8 Blazor 尝鲜
  • ::before和::after 常见的用法
  • ??javascript里的变量问题
  • @RequestMapping-占位符映射
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • [Angularjs]ng-select和ng-options
  • [C++] 小游戏 斗破苍穹 2.11.6 版本 zty出品
  • [CF482B]Interesting Array
  • [hdu 4405] Aeroplane chess [概率DP 期望]
  • [HNOI2008]玩具装箱toy
  • [IE技巧] 如何让IE 启动的时候不加载任何插件