首页 > 其他分享 >Qt学习01

Qt学习01

时间:2023-09-22 19:45:55浏览次数:34  
标签:控件 01 窗口 Qt Ctrl 学习 信号 函数

一、Qt简介
1、Qt是什么
图形用户界面应用程序开发框架,是对底层应用编程接口进行了面向对象的封装
是一套基于C++语言的库,专注但不限于图形用户界面程序开发,还可以进行系统调用、网络编程、数据库、2D/3D图形处理
2、为什么选择Qt
基于C++语言,使用简单、易用,有优秀的跨平台特性,支持Linux系统、Windows系统、MacOS系统、iOS系统、Android系统

二、Qt环境以及工具
Qt助手:Qt参考手册,Qt所有类、函数,相当于man手册
Qt构造器:负责对源文件、头文件、界面文件进行解析并自动生成Makefile
qmake
Qt设计师:对于应用程序开发而言,最开始、最纯粹的方式是通过C/C++代码来编写整个项目,但是这种方式费时费力,所以一般不会这样去做界面程序,而是通过画图、鼠标操作方式,自动生成对应的界面代码,所见即所得,设计完成后会得到一个xxx.ui界面文件
Qt界面编译器:负责把Qt界面文件翻译成C++编译器认识的C++代码

Qt创造器 = Qt助手+Qt构造器+Qt设计师+Qt界面编译器+文本编辑器,一个集成开发环境

三、第一个Qt程序
1、新建项目
打开Qt Creator 文件->新建文件或项目->Appliction->Qt Widget Appliction->输入项目名(不要有中文)、选择项目路径(路径中不要有中文)->选择编译器(默认即可)->输入默认的窗口类名、文件名(一般选择Widget即可)->完成
2、编写代码
QApplication a(argc, argv); //创建Qt应用程序对象
Widget w; // 创建窗口对象

    QLabel* lab = new QLabel(&w);   //  创建标签对象,并放入窗口w中
    lab->setText("Hello Qt");   //  设置文本内容
    //lab->show();                //  显示标签控件

    w.show();   //显示窗口
    return a.exec();    //  开始运行Qt程序
3、保存编译运行
    1、点击绿色按钮
    2、Ctrl+r

四、Qt创造器的常用快捷键
Ctrl+单击/F2 跳转到定义位置
Alt+Enter 对光标处的函数声明进行快速定义
Ctrl+i 快速调整代码格式
Ctrl+/ 注释、取消注释
Ctrl+f 搜索、替换
Ctrl+Shift+r 批量修改标识符名,Enter键确认
F4 在自定义的头文件、源文件之间切换
F1 查看光标处Qt类的帮助手册
Alt+0 显示或隐藏侧边栏
Shift+Alt+u 小写转大写
Alt+u 大写转小写
Ctrl+a Ctrl+c Ctrl+z Ctrl+v Ctrl+s

五、Qt帮助手册
Header:需要包含的头文件
qmake:需要依赖的模块,在xxx.pro文件中添加
Inherits:父类
Inherited By:子类
Properties:成员变量、父类中的成员变量
Public Functions:公开属性的成员函数
Reimplemented Public Functions:公开属性的需函数
Protected Functions:保护属性的成员函数
Reimplemented Protected Functions:保护属性的虚函数
Public Slots:公开属性的槽函数
Protected Slots:保护属性的槽函数
Signals:该类能够自己发出的信号
Detailed Description:对该类的详细说明

六、窗口容器
通过Hello案例,每个控件例如标签控件都需要有显示容器来承载,如果不提供则Qt会单独提供,因此想要一个整体的界面,就必须把需要的控件集合在同一个窗口中,这种就是Qt的窗口容器
1、QMainWindow 主窗口容器
通常包含标题栏、菜单栏、工具栏、主窗体组成
2、QDialog 对话窗口
会自带一些交互类的控件
3、QWidget 纯粹的窗口容器
以主窗体为主,它是QMainWindow和QDialog的父类

常用设置:
    resize(w,h) 设置窗口大小
    move(x,y)   设置窗口的位置,以屏幕左上角为原点
如何把控件通过代码放入窗口:
    1、创建窗口容器对象
        QWidget* w = new QWidget;
    2、创建控件时,把该窗口对象地址传递给该控件构造函数
        QLabel* lab = new Qlabel(w);
    3、只需要显示窗口,窗口中所有控件默认也会显式
        w->show();

七、Qt中的字符串和输出数据
QString类,具备string类的所有功能
它有一系列的to函数,可以方便地转换成其它类型数据
终端输出数据:
C/C++中的printf/scanf/cin/cout还可以继续使用

八、信号和槽
1、什么是Qt的信号
当用户或者系统满足一定条件或触发某些动作时,导致窗口或者控件、类发生一些改变时,它们就会发射出一个对应的信号。
信号可以预先连接一个特殊的函数,当信号被触发时,就会自动调用该函数,这样的函数就称为槽函数
例如:QPushButton中的单击信号clicked信号
2、槽函数
与普通函数一样,也可以被手动调用,但是一般不会这样调用,而是通过连接信号后,由信号来自动触发
3、信号和槽的连接
信号和槽必须建立connect连接后,才会触发槽函数
QObject::​connect(const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection)
sender:信号的发出控件,必须是QObject的子类,例如QPushButton
signal:要连接的信号的签名
通过SIGNAL(信号名()) 把信号转换成信号前面
receiver:信号的接受者,必须是QObject的子类
method:要绑定的槽函数的签名
通过SLOT(槽函数()) 把槽函数转成槽函数签名

    connect函数属于QObject的公开成员函数:
        如果在类外调用,需要声明QObject::connect
    QObject::connect(but,SIGNAL(clicked()),&w,SLOT(on_pB_clicked()));

标签:控件,01,窗口,Qt,Ctrl,学习,信号,函数
From: https://www.cnblogs.com/c-learnmore/p/17723210.html

相关文章

  • Qt学习02
    一、信号和槽1、什么是Qt的信号当用户或者系统满足一定条件或触发某些动作时,导致窗口或者控件、类发生一些改变时,它们就会发射出一个对应的信号。信号可以预先连接一个特殊的函数,当信号被触发时,就会自动调用该函数,这样的函数就称为槽函数例如:QPushButton中的单击信号clicked信......
  • Tinkoff Internship Warmup Round 2018 and Codeforces Round 475 (Div. 1) D. Freque
    Problem-D-Codeforces题意给定一个字符串,n次询问,每次询问一个字符串在给定字符串的子串中出现k次时子串的最小长度分析多模式匹配,想到使用AC自动机,由于询问子串总长度不超过M=1E5,那么对于长度不同的串最多有$\sqrt{M}$,那么我们队fail树中最长的链长度小于$\sqrt{M}$,对原......
  • 《动手学深度学习 Pytorch版》 7.5 批量规范化
    7.5.1训练深层网络训练神经网络的实际问题:数据预处理的方式会对最终结果产生巨大影响。训练时,多层感知机的中间层变量可能具有更广的变化范围。更深层的网络很复杂容易过拟合。批量规范化对小批量的大小有要求,只有批量大小足够大时批量规范化才是有效的。用\(\bol......
  • openGauss学习笔记-77 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT特性及
    openGauss学习笔记-77openGauss数据库管理-内存优化表MOT管理-内存表特性-MOT特性及价值本节介绍了openGauss内存优化表(Memory-OptimizedTable,MOT)的特性及价值。77MOT特性及价值MOT在高性能(查询和事务延迟)、高可扩展性(吞吐量和并发量)以及高资源利用率(某些程度上节约成本)方面......
  • 01_cout
    coutcout基本使用#include<iostream>//<>包含系统头文件inputoutputstraamusingnamespacestd;//使用命名空间stdcout<<"HelloWorld!中文"<<endl;//cout输出设备(终端,屏幕),endl换行//不使用命名空间的话:std::cout<<"HelloWorld!中文"&......
  • 微服务01-heima
    之前我们学习的项目一是单体项目,可以满足小型项目或传统项目的开发。而在互联网时代,越来越多的一线互联网公司都在使用微服务技术。从谷歌搜索指数来看,国内从自2016年底开始,微服务热度突然暴涨:那么:到底什么是微服务?企业该不该引入微服务?微服务技术该如何在企业落地?接下来......
  • 题解 P8670 [蓝桥杯 2018 国 B] 矩阵求和
    题目描述\[\sum_{i=1}^n\sum_{j=1}^n\gcd(i,j)^2\]具体思路solution1显然可以每次枚举\(\gcd(i,j)\)的取值。\[\sum_{k=1}^nk^2\sum_{i=1}^n\sum_{j=1}^n[\gcd(i,j)=k]\]令\(i=\lfloor\frac{i}{k}\rfloor\),\(j=\lfloor\frac{j}{k}\rfloor\)。\[\sum......
  • Apache Log4j Server CVE-2017-5645 反序列化命令执行漏洞
    漏洞描述攻击者可以通过发送一个特别制作的2进制payload,在组件将字节反序列化为对象时,触发并执行构造的payload代码。该漏洞主要是由于在处理ObjectInputStream时,接收函数对于不可靠来源的input没有过滤。可以通过给TcpSocketServer和UdpSocketServer添加可配置的过滤功能以及一......
  • 【学习中】sql注入-数字型注入
    随笔里的内容都是个人理解,如果有不对的地方,还望各位大佬多多指正。一、理论基础1、什么是数字型注入数字型注入攻击主要针对应用程序中的数字参数,攻击者通过修改参数值来欺骗应用程序执行非法操作。这类攻击通常发生在应用程序的输入验证不严密的地方,例如在SQL查询中直接使用......
  • go基础学习
    坏境安装SDK下载地址windows安装可以直接下载安装msi不需要配置坏境变量默认配置好了zip里面包含源码,但是需要配置坏境变量liunx安装SDKwgethttps://dl.google.com/go/go1.20.2.linux-amd64.tar.gztar-C/usr/local-xzfgo1.20.2.linux-amd64.tar.gzcd......