【五天时间】Qt从入门到实战:第一天
【五天时间】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从入门到实战:第一天相关推荐
- QT教程,QT从入门到实战教程完整版
Qt是一个跨平台开发框架,可以使用C++和Qml开发,同时它又不仅仅只是开发框架,它也是一种技术策略,可以让你快速.高效地设计.开发.部署和维护软件,同时在所有设备上提供无缝的用户体验.因而,对于C/ ...
- 最新QT从入门到实战完整版(07 对象树)
最新QT从入门到实战完整版(07 对象树) 一.07 对象树 来自 一.07 对象树 看到我们创建了一个按钮,然后并且让它显示到窗口中啊,那下边大家看一下我刚才创建的按钮啊.都写的是new啊,都写的是 ...
- 最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_)
最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_) 一.08.qt中的坐标系 二,09 信号和槽-点击按钮关闭窗口_ 来自 一.08.qt中的坐标系 二,09 信号 ...
- qt学习笔记 来自B站【最新QT从入门到实战完整版|传智教育】
最新QT从入门到实战完整版|传智教育 目录在这里 2022.2.4 day1 06 QPushButton创建 07 对象树 08 Qt的坐标系 09 信号和槽-点击按钮关闭窗口 10 自定义信号和槽 ...
- k8s之Pod详解(五)【Kubernetes(K8S) 入门进阶实战完整教程,黑马程序员K8S全套教程(基础+高级)】
参考于Kubernetes(K8S) 入门进阶实战完整教程,黑马程序员K8S全套教程(基础+高级) Pod Pod的结构 每个Pod中都可以包含一个或者多个容器 这些容器可以分为两类: 用户自定义用的 ...
- Qt基础入门到进阶实战资料大全(纯干货,超详细,随时更新)
文章目录 1.简介 2.Qt官网 3.Qt开源社区 1)国内社区 a)CSDN 社区 b)Qter社区 c)QTCN开发网 2)国外社区 a)QT software b)Qt Center c)Dev ...
- 跨平台C++ Qt数据库管理系统设计与实战:从理论到实践的全面解析
跨平台C++ Qt数据库管理系统设计与实战:从理论到实践的全面解析 一.引言(Introduction) 1.1 数据库管理系统的重要性(Importance of Database Manageme ...
- 8s pod 查看 的yaml_Kubernetes入门到实战(五)深入浅出详解Pod
作者:Happy老师 链接:https://blog.51cto.com/happylab/2500457 写在前面 前面的系列文章已介绍kubernetes架构,安装,升级和快速入门,读者通过文章的 ...
- VS集成Qt开发入门(简易时间显示)
VS集成Qt开发入门(简易时间显示) 软件开发入门 开发环境 简单时间显示(LcdNumber) ui界面设计(clock.ui) 工程文件(clock.h,clock.cpp) 头文件clock.h ...
最新文章
- 吕乐:医学影像学者的医者仁心 | 智源专访
- Android开发举步维艰,上弘法寺七七四十九天取得“真经”!
- canvas - 饼状图
- matlab fittype 求不出参数,[转]matlab 中fit fittype
- Toast的基本用法 吐司打印
- 成熟的夜间模式解决方案
- python读取ttf_python解析字体反爬
- 二位数组的随机生成,遍历,求和,反转。和两个变量的^反转 源码
- 50个linux初学者必须掌握的命令
- 框架页面中,从子页面刷新父页面问题解决
- 一个简单的Python爬虫
- 数值优化(二):信赖域方法与二维空间法
- Gd-DTPA钆元素钆元素对比磁共振造影剂 氟-19磁共振/荧光双模态显影剂19F MRI
- 20210725:FLAC刻录音乐CD教程03-Flac转wav格式
- App(iOS Android)开发时简单的用户反馈实现
- 更新后的微信新功能,你知道吗?
- 小米路由器3刷openWRT系统的实践过程
- ✨【Code皮皮虾】一次通过99.90%,思路详解【找到需要补充粉笔的学生编号】
- invalid token XXX
- 瑞工热敏票据打印机不自动裁切的设置
热门文章
- 窥探、窃取、威胁,恶意爬虫正在搞垮你的网站,这届“网络流氓”真不好对付
- 服务器pci数据捕获和信号处理 感叹号,PCI数据捕获和信号处理控制器出现黄色感叹号 win10 系统?...
- Unity随记(七) shader实现石像石化效果
- 算法---找出第 N 个二进制字符串中的第 K 位(Kotlin)
- TOP 命令中wio的正确理解
- Android 通过okhttp + jsoup 爬虫爬取网页小说
- [机缘参悟-30]:鬼谷子-内揵篇-同理心,站在对方的立场,拉近与对方的心理距离
- 页面请求方法参数最长_url传值的长度限制解决办法
- 【市场调查与预测】市场调查的定义与作用
- Android高德地图加载WMS服务应用实践