【五天时间】Qt从入门到实战:第一天

  • 第一天
    • 1.1 Qt的介绍、优点、成功案例
      • 什么是Qt?
      • Qt的优点
      • Qt的成功案例
    • 1.2 创建第一个Qt程序
    • 1.3 熟悉按钮控件常用API
    • 1.4 对象树的基本概念
    • 1.5 Qt中的坐标系统
    • 1.6 信号和槽的基本使用以及扩展

第一天

1.1 Qt的介绍、优点、成功案例

什么是Qt?

Qt是一个跨平台的C++图形用户界面应用程序框架。她为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。下载地址:https://download.qt.io/new_archive/qt/

Qt的优点

  • 跨平台,几乎支持所有的平台
  • 接口简单,容易上手
  • 一定程度上简化了内存回收机制
  • 开发效率高,能够快速的构建应用程序
  • 可以进行嵌入式开发

Qt的成功案例

  • Linux桌面环境
  • WPS office办公软件
  • Skype网络电话
  • 谷歌地图
  • VLC多媒体播放器
  • VirtualBox虚拟机软件

1.2 创建第一个Qt程序

  • 点击创建项目后,选择项目路径以及项目名称.
  • 名称:不能有中文,不能有空格
  • 路径:不能有中文路径
  • 默认创建有窗口类:myWidget,基类有三种选择:QWidget,QMainWindow、QDialog
  • main函数
    • QApplication a 应用程序对象,有且仅有一个
    • myWidget w 实例化窗口对象
    • w.show() 调用show函数显示窗口
    • return a.exec(); 让应用程序对象进入消息循环机制中,代码阻塞到当前行

1.3 熟悉按钮控件常用API

#include "mywidget.h"
#include<QPushButton>myWidget::myWidget(QWidget *parent): QWidget(parent)
{//创建一个按钮QPushButton *btn=new QPushButton;btn->show();//show以顶层方式弹出窗口控件//让btn对象依赖在myWidget窗口中btn->setParent(this);//显示文本btn->setText("第一个按钮");//创建第二个按钮 按照控件的大小创建窗口QPushButton * btn2=new QPushButton("第二个按钮",this);//移动btn2按钮btn2->move(100,100);//重置窗口大小resize(600,400);//固定窗口大小setFixedSize(600,400);//设置窗口标题setWindowTitle("第一个窗口");
}myWidget::~myWidget()
{}

1.4 对象树的基本概念

  • 当创建的对象在堆区的时候,如果指定的父亲是QObject派生下来的类或者QObject子类派生下来的类,可以不用管理释放操作,自动将其放入对象树中。
  • 一定程度上简化了内存回收机制。

1.5 Qt中的坐标系统

  • 左上角为0,0点
  • x以右为正方向,y以下为正方向

1.6 信号和槽的基本使用以及扩展

  • 连接函数 connect

    • 参数1:信号的发送者
    • 参数2:发送的信号(函数地址)
    • 参数3:信号的接收者
    • 参数4:处理的槽函数(函数地址)
//需求 点击我的按钮 关闭窗口//参数1 信号的发送者 参数2 发送的信号(函数的地址)参数3 信号的接收者 参数4 处理的槽函数connect(myBtn,&QPushButton::clicked,this,&QWidget::close);
  • 自定义信号和槽

    • 自定义信号:写到Signals下;返回void;需要声明,不需要实现;可以有参数,不可以重载。
    • 自定义槽函数:返回void;需要声明和实现;可以有参数,可以重载;写到public slot下或者public或者全局函数
//创建一个老师对象this->zt=new Teacher(this);//创建一个学生对象this->st=new Student(this);//老师饿了,学生请客的连接connect(zt,&Teacher::hungry,st,&Student::treat);//调用下课函数classIsOver();
  • 当自定义信号和槽出现重载,需要利用函数指针明确指向函数的地址
 //连接带参数的信号和槽函数//指针->地址//函数指针->函数地址void(Teacher::*teacherSignal)(QString)=&Teacher::hungry;void(Student::*studentSlot)(QString)=&Student::treat;//老师饿了,学生请客的连接connect(zt,teacherSignal,st,studentSlot);//调用下课函数classIsOver();
  • QString转为char*:

    • QString转为QByteArray:.toUtf8()
    • QByteArray转为char*:.data()
      QString:有括号

      char*:没有括号
  • 信号可以连接信号
  • 一个信号可以连接多个槽函数
  • 多个信号可以连接同一个槽函数
  • 信号和槽函数的参数必须类型一一对应
  • 信号和槽函数的参数个数是不是要一致?信号的参数个数可以多于槽函数的参数个数
 //无参信号和槽连接void(Teacher::*teacherSignal2)(void)=&Teacher::hungry;void(Student::*studentSlot2)(void)=&Student::treat;connect(zt,teacherSignal2,st,studentSlot2);//信号连接信号connect(btn,&QPushButton::clicked,zt,teacherSignal2);
  • 断开信号
 //断开信号disconnect(zt,teacherSignal2,st,studentSlot2);
  • Qt4版本以前的信号和槽连接方式
//Qt4版本以前的信号和槽连接方式//利用Qt4信号和槽连接无参版本connect(zt,SIGNAL(hungry()),st,SLOT(treat()));

【五天时间】Qt从入门到实战:第一天相关推荐

  1. QT教程,QT从入门到实战教程完整版

    Qt是一个跨平台开发框架,可以使用C++和Qml开发,同时它又不仅仅只是开发框架,它也是一种技术策略,可以让你快速.高效地设计.开发.部署和维护软件,同时在所有设备上提供无缝的用户体验.因而,对于C/ ...

  2. 最新QT从入门到实战完整版(07 对象树)

    最新QT从入门到实战完整版(07 对象树) 一.07 对象树 来自 一.07 对象树 看到我们创建了一个按钮,然后并且让它显示到窗口中啊,那下边大家看一下我刚才创建的按钮啊.都写的是new啊,都写的是 ...

  3. 最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_)

    最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_) 一.08.qt中的坐标系 二,09 信号和槽-点击按钮关闭窗口_ 来自 一.08.qt中的坐标系 二,09 信号 ...

  4. qt学习笔记 来自B站【最新QT从入门到实战完整版|传智教育】

    最新QT从入门到实战完整版|传智教育 目录在这里 2022.2.4 day1 06 QPushButton创建 07 对象树 08 Qt的坐标系 09 信号和槽-点击按钮关闭窗口 10 自定义信号和槽 ...

  5. k8s之Pod详解(五)【Kubernetes(K8S) 入门进阶实战完整教程,黑马程序员K8S全套教程(基础+高级)】

    参考于Kubernetes(K8S) 入门进阶实战完整教程,黑马程序员K8S全套教程(基础+高级) Pod Pod的结构 每个Pod中都可以包含一个或者多个容器 这些容器可以分为两类: 用户自定义用的 ...

  6. Qt基础入门到进阶实战资料大全(纯干货,超详细,随时更新)

    文章目录 1.简介 2.Qt官网 3.Qt开源社区 1)国内社区 a)CSDN 社区 b)Qter社区 c)QTCN开发网 2)国外社区 a)QT software b)Qt Center c)Dev ...

  7. 跨平台C++ Qt数据库管理系统设计与实战:从理论到实践的全面解析

    跨平台C++ Qt数据库管理系统设计与实战:从理论到实践的全面解析 一.引言(Introduction) 1.1 数据库管理系统的重要性(Importance of Database Manageme ...

  8. 8s pod 查看 的yaml_Kubernetes入门到实战(五)深入浅出详解Pod

    作者:Happy老师 链接:https://blog.51cto.com/happylab/2500457 写在前面 前面的系列文章已介绍kubernetes架构,安装,升级和快速入门,读者通过文章的 ...

  9. VS集成Qt开发入门(简易时间显示)

    VS集成Qt开发入门(简易时间显示) 软件开发入门 开发环境 简单时间显示(LcdNumber) ui界面设计(clock.ui) 工程文件(clock.h,clock.cpp) 头文件clock.h ...

最新文章

  1. 吕乐:医学影像学者的医者仁心 | 智源专访
  2. Android开发举步维艰,上弘法寺七七四十九天取得“真经”!
  3. canvas - 饼状图
  4. matlab fittype 求不出参数,[转]matlab 中fit fittype
  5. Toast的基本用法 吐司打印
  6. 成熟的夜间模式解决方案
  7. python读取ttf_python解析字体反爬
  8. 二位数组的随机生成,遍历,求和,反转。和两个变量的^反转 源码
  9. 50个linux初学者必须掌握的命令
  10. 框架页面中,从子页面刷新父页面问题解决
  11. 一个简单的Python爬虫
  12. 数值优化(二):信赖域方法与二维空间法
  13. Gd-DTPA钆元素钆元素对比磁共振造影剂 氟-19磁共振/荧光双模态显影剂19F MRI
  14. 20210725:FLAC刻录音乐CD教程03-Flac转wav格式
  15. App(iOS Android)开发时简单的用户反馈实现
  16. 更新后的微信新功能,你知道吗?
  17. 小米路由器3刷openWRT系统的实践过程
  18. ✨【Code皮皮虾】一次通过99.90%,思路详解【找到需要补充粉笔的学生编号】
  19. invalid token XXX
  20. 瑞工热敏票据打印机不自动裁切的设置

热门文章

  1. 窥探、窃取、威胁,恶意爬虫正在搞垮你的网站,这届“网络流氓”真不好对付
  2. 服务器pci数据捕获和信号处理 感叹号,PCI数据捕获和信号处理控制器出现黄色感叹号 win10 系统?...
  3. Unity随记(七) shader实现石像石化效果
  4. 算法---找出第 N 个二进制字符串中的第 K 位(Kotlin)
  5. TOP 命令中wio的正确理解
  6. Android 通过okhttp + jsoup 爬虫爬取网页小说
  7. [机缘参悟-30]:鬼谷子-内揵篇-同理心,站在对方的立场,拉近与对方的心理距离
  8. 页面请求方法参数最长_url传值的长度限制解决办法
  9. 【市场调查与预测】市场调查的定义与作用
  10. Android高德地图加载WMS服务应用实践