QT学习日志(附:简易计算器,qq登录界面,简易绘图板,植物大战僵尸魔改版项目实践)

目录

写在前面

撑住,就要睡觉了

我一开始以为要放暑假了实训应该挺轻松的,就是大家一起做做项目挺有趣的,直到老师第一天要我们做出个计算器,第二天要我们做出个地址簿,然后我每天就几乎没干过别的事情了
一般睡觉时间是凌晨1~2点
换了个头像,我觉得比较适合我敲代码的样子
在这里插入图片描述
结束的时候再换了个头像,还是豌豆射手好看些,梦开始的地方
在这里插入图片描述

实训前一天

任务:第一个Qt程序

  1. Qt下载与安装
  2. 创建图形界面应用程序,显示“Hello World”
    ① 使用纯代码方式编写
    ② 使用.ui文件

头文件无法生成

ctrl shift+B的时候出现 Makefile.Debug: No such file or directory
搜集了各种头文件无法生成原因的资料,附上网址:
添加ui文件以及构建ui头文件方法
QT中 No such file or directory的解决办法
(存着以后也许用得到)

在这里插入图片描述
调试了很久,原因竟是自己在.pro文件里少打了个字母p
在这里插入图片描述
所以出现这种问题很可能就是自己疏忽输错了
另:网上查找之后发现只需ctrl+B就够了,加上shift老是把我搜狗的颜文字给弹出来了
ctrl+B就是编译的意思,编译不成功就生成不了头文件

项目栏不见了

控件-Show Sidebar,我是不小心关掉的,学习许多软件都会出现这种情况,一般的解决方法都是去找窗口栏
在这里插入图片描述
在这里插入图片描述

不知道如何发布程序

在dubug文件里找到.exe文件后,直接打开会报系统错误
在这里插入图片描述
存疑(明天的我比今天的我更有智慧解决问题)
(实训第二天更)
听课听了一半,在文件夹里找齐了这些ddl
在这里插入图片描述
自信满满以为可以芜湖起飞,结果还是报错
在这里插入图片描述
好在找到了一篇文章,分享一下:
Qt程序打包发布方法
这工具是Qt自带的,左下角搜qt就能出来,打包好久可以直接用了
(简答来说,找到exe文件复制到D盘一个目录下,用命令行打开这个目录,输入wind…打包就行了)
在这里插入图片描述
存一张图免得自己忘记代码了

实训第一天(附简易计算器的实现)

任务:
1.窗口部件学习(窗口,信号与槽,对话框)
2.布局管理器学习
3.实验任务:制作简易计算器

制作简易计算器链接
QT入门_简易计算器的实现与遇到的问题汇总

遇到的问题:

自定义命名空间的相关问题

这串代码困扰了我好久
mainwindow.h:

namespace Ui {
    class MainWindow;
}

ui_mainwindow.h:

namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

mainwindow.cpp

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent),ui(new Ui::MainWindow)
{
	......
}

疑问的解决参考:
Qt Ui 头文件研究 (推荐这篇文章,讲得很好)
简单来说,命名空间的用处就是命名变量、类等,多次定义会报错,mainwindow.h中只是声明MainWindow类,ui_mainwindow.h中是在定义MainWindow类,关于命名空间的其他细节请参考上述文章
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)解析
至于为什么后面还要加上ui(new Ui::MainWindow),个人的理解是:本来这条语句是定义MainWindow的构造函数,“:”后面的不是类名后有参数说明它也不是继承关系,而是采用初始化列表构造函数。而由于在类外定义构造函数而直接用类中的成员变量会报错,所以采用:ui(new Ui::MainWindow)ui->setupUi(this)this->ui->btn0的方式来使用类的成员变量

(其实笔者当时理解不了是忘记这个使用初始化列表的构造函数的知识点了,哼唧唧.jpg)

书上的知识点:
在这里插入图片描述

关于隐式调用构造函数的问题

敲代码的时候:
有时程序运行不出正确结果,冥思苦想,却说这也不行?
有时候程序突然能运行出正确结果了,一脸懵逼,这怎么又可以?

又是这里:

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent),ui(new Ui::MainWindow)
{
	......
}

我定义的是有参构造函数吧

int main(int argc,char *argv[]){
    QApplication a(argc,argv);
    MainWindow w;
    w.show();
    return a.exec();
}

怎么一到主函数变成无参构造了?
本来头一天照着别人的写简易计算器都能运行出正确结果了,今天已检查又纳闷了,这都行?

其实是笔者c++基础不牢实

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

这是缺省的构造函数啦,忘记的可以回去翻课本了
另外关于explicit的用法:explicit关键字的作用

实训第二天(不附地址薄的实现)

任务:
1.应用程序主窗口学习
2.制作简易地址簿

地址簿的博客就不写了,大型拼图游戏,巨多代码
先来解决昨天的这个“世纪难题”

关于on_pushButton_clicked()的默认connect

昨天写计算器的时候遇到一个问题:
老感觉函数里的if 和 else if里的代码都执行了

void MainWindow::on_btnflag_clicked(
  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值