QT第一天(工程的创建和字符串的使用)

QT 是什么?

Qt Creator 是1999年由QT Company开发的跨平台c++图形界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台和服务器。

什么是开发框架?

​ 简单理解就是库接口,但是这些库接口你必须要遵守他的规则才能使用。 所以叫框架!

- LibSourcey :用于实时的视频流和高性能网络应用程序的C++11 evented IO
- LibU : C语言写的多平台[工具库)
- Loki :C++库的设计,包括常见的设计模式和习语的实现。
- MiLi :只含头文件的小型C++库
- openFrameworks :开发C++工具包,用于创意性编码。
- Qt :跨平台的应用程序和用户界面框架  ************* 
- Reason :跨平台的框架,使开发者能够更容易地使用Java,.Net和Python,同时也满足了他们对C++性能和优势的需求。
- ROOT :具备所有功能的一系列面向对象的框架,能够非常高效地处理和分析大量的数据,为欧洲原子能研究机构所用。
- STLport:是STL具有代表性的版本
- STXXL:用于额外的大型数据集的标准模板库。
- Ultimate++ :C++跨平台快速应用程序开发框架

所以QT只是众多C++ 开发框架中的其中一个而已! 

QT 的特点

QT 框架的特点就是跨平台性很强!几乎兼容所有的软硬件平台! 大大的提高开发效率!
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

创建第一个QT工程

1.创建QT—widget 应用程序
在这里插入图片描述

2.设置工程的名称与路径

注意:工程路径不能有中文名称
在这里插入图片描述

3.设置类名
在这里插入图片描述

4.选择编译器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1gZn7en4-1668503506171)(笔记.assets/image-20220929100931995.png)]

5.编译测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MGjvN2xh-1668503506171)(笔记.assets/image-20220929101055995.png)]

QT 工程的分析

在这里插入图片描述

xxx.pro 工程配置文件

#添加QT 模块,先有模块才有类
QT       += core gui
#QT       += core  核心模块,提供QT 信号与槽机制
#QT       += gui   窗体模块
#QT       += widgets  小部件模块  几乎所有的QT 工程都需要这三大模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

#使用C++11 的语法进行编译
CONFIG += c++11

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
#设置源文件
SOURCES += \
    main.cpp \
    mywin.cpp

#设置头文件
HEADERS += \
    mywin.h

#设置UI文件
FORMS += \
    mywin.ui

# Default rules for deployment. 设置编译器的所在路径 
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

xxx.h 头文件

#ifndef MYWIN_H
#define MYWIN_H  //防止头文件重复定义 (包含)

//添加基类的头文件
#include <QMainWindow>

//定义一个命名空间,QT_BEGIN_NAMESPACE 与 QT_END_NAMESPACE ,QT 框架提供的用户关联UI文件
QT_BEGIN_NAMESPACE

namespace Ui { class mywin; }  //目的把界面与代码分开!

QT_END_NAMESPACE


//定义一个 mywin 派生类: 继承基类QMainWindow,在mywin 中就可以调用QMainWindow 中的所有接口
class mywin : public QMainWindow
{
    //信号与槽的宏定义,QT对象与对象之间的通信机制
    Q_OBJECT

public:
    //构造函数
    mywin(QWidget *parent = nullptr);
    //析构函数
    ~mywin();

private:
    //定义一个ui对象指针,指向当前的界面 
    Ui::mywin *ui;
};
#endif // MYWIN_H

main.cpp 主函数

//包含用户自定义的窗体头文件
#include "mywin.h"

//包含一个应用头文件
#include <QApplication>

//主函数
int main(int argc, char *argv[])
{
    //创建一个QT 应用
    QApplication a(argc, argv);

    //在定义上定义一个自己的窗体
    mywin w;
    //显示窗体
    w.show();

    return a.exec(); //执行应用:处理并刷新窗体
}



xxx.cpp 窗体文件

#include "mywin.h"

//QT软件自动编写的一个头文件,里面包含了所有界面相关的操作
#include "ui_mywin.h"

//构造函数                    //参数列表初始化 QMainWindow(parent) 基类
                            // ui(new Ui::mywin)  初始化UI 指针,指向堆空间
mywin::mywin(QWidget *parent): QMainWindow(parent), ui(new Ui::mywin)
{
    //调用ui->setupUi 函数 ??函数在哪里???
    ui->setupUi(this); //系统自动根据 mywin.ui 文件自动生成,
}

//析构函数
mywin::~mywin()
{
    //删除堆空间 
    delete ui;
}


纯C++ 构造QT工程

1.新建一个C++工程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FZiBPxRF-1668503506172)(笔记.assets/image-20220929111825696.png)]

2.添加QT 模块

TEMPLATE = app

#添加QT 三大模块
QT += core gui widgets

CONFIG +=  c++11

SOURCES += \
        main.cpp

3.创建窗体的代码

#include <iostream>

using namespace std;

//添加窗体头文件
#include <QMainWindow>

//添加QT 应用头文件
#include <QApplication>

//添加标签
#include <QLabel>


int main(int argc,char **argv)
{
    cout << "Hello World!" << endl;
    //定义一个QT 应用
    QApplication app(argc,argv);

    //新建一个窗体
    QMainWindow w;

    //设置窗体的大小
    w.setFixedSize(800,480);

    //设置标题
    w.setWindowTitle("我的第一个QT程序");

    //创建一个标签
    QLabel lb(&w);
    //设置标签的文字
    lb.setText("姓名:刘德华");
    //设置标签的位置
    lb.setGeometry(350,100,100,100);


    //创建一个标签
    QLabel lb1(&w);
    //设置标签的文字
    lb1.setText("学号:1314520");
    //设置标签的位置
    lb1.setGeometry(350,200,100,100);

    //创建一个标签
    QLabel lb2(&w);
    //设置标签的文字
    lb2.setText("电话:1314666777");
    //设置标签的位置
    lb2.setGeometry(350,300,100,100);


    //显示一个窗体
    w.show();

    return app.exec(); //执行应用


    //练习:在QT 中创建一个C++ 工程,并调用QT 库,显示自己的姓名学号电话在 屏幕中央!

}

QT_UI文件使用

在这里插入图片描述

属性的调整
在这里插入图片描述

字体调整
在这里插入图片描述

对象选择
在这里插入图片描述

调用UI中的控件

//构造函数
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{
    //设置界面的属性
    ui->setupUi(this);

    //界面->标签->设置文件("???");
    ui->label->setText("我很好,下午好");
}

QT 帮助文档的使用

在这里插入图片描述

QString 类的使用

常用接口:

//定义一个字符串类
QString  str="下午好";


//字符串追加  
QString &append(const char *str)
//从末尾删除n个字符
void QString::chop(int n)
//判断字符串中是否包含某个字符
bool QString::contains(const QString &str) const

//统计字符中字符串中出现的次数 
int QString::count(const QString &str) const   
    
//字符串查找   
int QString::indexOf(const QString &str, int from = 0) const
    
//从末尾开始查找
int QString::lastIndexOf(const QString &str, int from = -1) const    
      
//插入一个字符串    
QString &QString::insert(int position, const QString &str)   
    
//取中间字符
QString QString::mid(int position, int n = -1) const
    
//字符串删除    
QString &remove(const QString &str)

//字符串替换 
QString &replace(const QString &before, const QString &after)

//字符串切割 
QStringList  ls = str.split("/");

类型转换

把QString 转换为整形数据    
double toDouble(bool *ok = nullptr) const
float toFloat(bool *ok = nullptr) const
int toInt(bool *ok = nullptr, int base = 10) const

把QString 转换为  char *  
//打开一个文件
FILE *fp = fopen("my.txt","w+");
QString data="2022-9-29-15-54";
fprintf(fp,"%s",data.toUtf8().data());
//关闭文件
fclose(fp);    

把整形转换 为 QString 类型   
QString data = QString::number(10086); 

QString data =  QString::asprintf("%s-%d-%f","hello",10086,3.14);

QString 类的拼接

QString str = QString("%1 - %2 + %3").arg("HELLO").arg(100).arg(3.14);

qDebug() << str;

QT 信号与槽初探

1.注册信号与槽

在这里插入图片描述

2.输入框的使用
在这里插入图片描述
获取输入框的信息 :

QString msg  = ui->lineEdit->text();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值