文章目录

  • 一、Qt是什么
  • 二、Qt的安装
  • 三、Qt的优点
  • 四、创建第一个程序
  • 五、命名规范和快捷键
  • 六、QPushButton
  • 七、对象树
  • 八、信号和槽
  • 九、Lambda表达式

一、Qt是什么

Qt是跨平台C++图形用户界面应用程序框架

二、Qt的安装

下载网址:https://download.qt.io/archive/qt/
选择老一点的版本下载windows平台,登录Qt账号后一直点击下一步,组件不知道哪些有用就多选点

三、Qt的优点

  1. 跨平台,几乎支持所有的平台
  2. 接口简单,容易上手
  3. 一定程度简化内存回收机制
  4. 开发效率高,能快速创建应用程序

四、创建第一个程序

创建[Qt Widgets Application]
使用基类[QWidget]

// main.cpp
#include "mywidget.h"
#include <QApplication> //包含一个应用程序类的头文件// main程序入口 argc是命令行变量的数量 argv是命令行变量的数组
int main(int argc, char *argv[])
{// a应用程序对象,在Qt中,应用程序对象有且仅有一个QApplication a(argc, argv);// 窗口对象w myWidget的父类->QWidgetmyWidget w;// 窗口对象默认不会显示,必须要调用show方法显示窗口w.show();// 让应用程序对象a进入消息循环机制return a.exec();
}
//mywidget.h
Q_OBJECT // Q_OBJECT宏,允许类中使用信号和槽的机制

五、命名规范和快捷键

命名规范
类名:首字母大写,单词和单词之间首字母大写
函数名、变量:首字母小写,单词和单词之间首字母大写
快捷键
注释 ctrl + /
运行 ctrl + r
编译 ctrl + b
字体缩放 ctrl + 鼠标滚轮
查找 ctrl + f
整行移动 ctrl + shift + ↑
自动对齐 ctrl + i
同名之间的.h和.cpp切换 F4

六、QPushButton

    // 创建一个按钮QPushButton * btn = new QPushButton;
//    btn->show();// show以顶层方式弹出窗口控件btn->setParent(this);//显示文本btn->setText("第一个按钮");//创建第二个按钮 按照控件的大小创建窗口QPushButton * btn2 = new QPushButton("第二个按钮", this);//移动btn2按钮位置btn2->move(100, 100);//重置窗口大小resize(600, 400);//设置固定窗口大小setFixedSize(600, 400);//设置窗口标题setWindowTitle("第一个窗口");

七、对象树

创建QObject对象时,会将这个QObject对象添加到父对象的children()列表
父对象析构的时候,会把列表中所有对象析构
Markdown将文本转换为 HTML。

八、信号和槽

槽就是信号的处理函数
信号槽的优点:松散耦合,信号发送端和接收端本身是没有关联的,通过connect连接将两端耦合在一起。

 //需求 点击我的按钮 关闭窗口//参数1-信号的发送者 参数2-发送的信号 参数3-信号的接收者 参数4-处理的槽函数connect(btn3, &QPushButton::clicked, this, &myWidget::close);

自写信号和槽

//.h文件//槽函数返回值void,需要声明,也需要实现//可以有参数,可以发生重载void treat();signals://自定义信号写到signals下//返回值是void,只需要声明,不需要实现//可以有参数,可以重载void hungery();
//.cpp文件//创建一个老师对象this->tea = new Teacher(this);//创建一个学生对象this->stu = new Student(this);//老师饿了,学生请客的连接connect(tea, &Teacher::hungery, stu, &Student::thread);//调用下课函数classIsOver();
void Widget::classIsOver()
{//下课函数,调用后,触发老师饿了//信号需要触发emit tea->hungery();
}

信号和槽发生重载的情况
使用函数指针,指向重载的函数地址

    //连接带参数的,信号和槽//指针->地址//函数指针->函数地址void(Teacher:: *teacherSignal)(QString) = &Teacher::hungery;void(Student:: *studentSlot)(QString) = &Student::treat;connect(tea, teacherSignal, stu, studentSlot);//连接无参的信号和槽void(Teacher:: *teacherSignal2)(void) = &Teacher::hungery;void(Student:: *studentSlot2)(void) = &Student::treat;connect(tea, teacherSignal2, stu, studentSlot2);//断开信号disconnect(tea, teacherSignal2, stu, studentSlot2);

信号与槽扩展

  1. 信号是可以连接信号的
  2. 一个信号可以连接多个槽函数
  3. 多个信号可以连接同一个槽函数
  4. 信号和槽函数的参数类型必须一一对应
  5. 信号的参数个数可以多于槽函数的参数
  6. 如果信号的发送者和接受者是一个,可以忽略接受者参数

九、Lambda表达式

C++1中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作
[函数对象参数](操作符重载函数参数)mutable->返回值{函数体}

函数对象参数:

  1. 【=】局部变量都用值传递方式
  2. 【&】局部变量都用引用传递方式
  3. 【a】将a按值进行传递
  4. 【&a】将a按引用进行传递

加入mutable可以修改值传递的拷贝

//->返回值
int ret = []()->int{return 1000;}();

从零开始学习Qt(一)相关推荐

  1. 关于从零开始学习qt制作蓝牙app和PC端的记录

    1.提前准备学习 由于本人在此之前只学习过C语言,了解到QT制作会用到C++的基础部分,所以提前学习了C++,大概花费三天 接下来学习QT 推荐B站学习 基本只需要学习基本使用 后面实践才是最重要的 ...

  2. 从零开始学习音视频编程技术(七) FFMPEG Qt视频播放器之SDL的使用

    从零开始学习音视频编程技术(七) FFMPEG Qt视频播放器之SDL的使用 原文地址:http://blog.yundiantech.com/?log=blog&id=10 前面介绍了使用F ...

  3. 从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像

    从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像 原文地址:http://blog.yundiantech.com/?log=blog&id=9 前面讲解了如何用FFM ...

  4. Devops系统化,从零开始学习容器技术(更新中)

    文章目录 Devops系统化,从零开始学习Docker.K8s 一.容器技术和Docker简介 1.1 Docker导学 1.2 容器技术概述 二.Docker环境的各种搭建方法 2.1 Docker ...

  5. 从零开始学习 webservice第一集,java webservice简单实例入门教程

    现在从零开始学习webservice 概念自己百度搜,总之,webservice就相当于一个接口,就像你走进了一家售货店,你不需要知道这家店怎么卖给你东西,你拿着钱去,说我要一包玉溪,人家就会给你返回 ...

  6. python新手教程 从零开始-Python零基础从零开始学习Python十分钟快速入门

    原标题:Python零基础从零开始学习Python十分钟快速入门 学习Python的,都知道Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python是一种动态解释型的 ...

  7. python零基础难学吗-如何从零开始学习Python,零基础学python难吗

    Python并不难学,它诞生至今已经过25个年头,但相对于其他语言,它更加易学.易读,非常适合快速开发,Python编程简单直接,更适合初学编程者. 那么,如何从零开始学习python呢? 可以分为这 ...

  8. python自学多久可以找到工作-25岁从零开始学习python还能找到工作吗?

    相信近期大家经常可以看到培训机构推出python相关的课程,随着人工智能技术逐渐进入大众的生活,这种编程语言以简单.应用广泛的优势,成为了进入人工智能领域的条件之一.对于精通python开发的人,在职 ...

  9. python语言怎么学-如何从零开始学习Python,python语言编程入门

    Python并不难学,它诞生至今已经过25个年头,但相对于其他语言,它更加易学.易读,非常适合快速开发,Python编程简单直接,更适合初学编程者. 那么,如何从零开始学习python呢? 可以分为这 ...

最新文章

  1. 挡d挡切换_吉行贴士 | 从N-D换挡,就是如此轻松
  2. 批处理文件检测windows系统是32位还是64位
  3. 关于malloc与字符指针的一些易错点
  4. 【BO】WEBI文件打开时提示Illegal access错误
  5. python 向量取整数_随机整数向量| 使用Python的线性代数
  6. 频谱扩展 matlab,简单的直接扩展频谱通信系统仿真分析
  7. Spring MVC学习总结(15)——SpringMVC之国际化简单实现
  8. 1.5多媒体技术的应用领域
  9. c语言二级考试题库及答案,c语言二级考试题库
  10. web前端开发流程图,118页Vue面试题总结,完整PDF
  11. OSChina 周二乱弹 —— C 语言是个女的?
  12. TabWidget当前标签底线颜色
  13. 数据挖掘与数据分析项目链家租房数据(一)数据爬虫
  14. 200行Py代码带你实现打飞机
  15. Java 小项目——字符界面收银台(优化版)
  16. 程序员提供9个最好的论坛
  17. linux7 设置隐藏账号,科学网-CentOS 7 在登录界面用户列表中隐藏指定账号-乔磊的博文...
  18. 基于京东云云主机搭建WordPress网站
  19. vscode中怎样格式化js代码_VSCode插件JS-CSS-HTML Formatter自动格式化代码
  20. [zt]某MBA创业失败后的感慨

热门文章

  1. android k主题,K主题(萌图锁屏)
  2. 趣说三次握手、四次挥手:遇到心动小姐姐,如何去把握?
  3. 华为云桌面Workspace,实惠更实用!
  4. 推荐一款高颜值的 Spring Boot 快速开发框架
  5. java 递归查找,Java程序使用递归查找自然数之和
  6. PPT集成Power BI仪表板实现交互式数据可视化
  7. 在线靶场-墨者-电子数据取证1星-安卓手机文件分析取证(陌陌ID号)
  8. 计算机怎么新建用户名和密码,win10怎么新建用户账户?win10系统如何创建新用户?(图文)...
  9. 2019微信公开课PRO:百果园获 “年度智慧服务”奖
  10. css设置不显示超出内容_显示...,css设置内容超出后显示省略号