什么是QT ?

183 阅读4分钟

什么是QT ???

跨平台C++图形用户界面应用程序开发框架。

QT的特点:

一个框架。一套代码库。任意平台部署。 (跨平台性很强! QT设计的软件,基本上兼容所有的平台设备:window,Linux,arm,iOS,Android,stm32,树莓派..... )

QT 行业介绍

工作技能要求:

岗位职责:
​
①熟练掌握C/C++开发语言,对开源有一定的认识,熟练使用QT开发环境,QT界面开发的机制,有QT5编程开发经验的优先。
​
②熟悉Linux嵌入式系统开发和Shell编程。
​
③有linux下网络及多线编程经验。
​
④负责应用层的QT界面开发。
​
任职资格:
​
本科及以上,一年以上相关工作经验,计算机相关专业,能读懂英文文献,勤恳踏实,服从安排。
​
    
岗位要求:
1、电子、通信、计算机、自动控制等相关专业毕业,大专及以上学历;
2、熟悉PC端Windows和Linux下的QT应用开发;
3、熟悉QT开发流程;
4、有嵌入式Linux的QT应用经验;
5、有QML相关开发经验。
    
1、熟悉C++,能基于c++熟练使用QT Creator;
2、熟悉RS485,232,Modbus,以太网通讯协议;
3、熟悉SQL和MySql数据库,熟悉Socket编程,TCP/IP协议,熟悉多进程;
4、做过仪器数据采集优先,会mfc,qml优先; 
   

QT 的获取

1.通过官方渠道下载

www.qt.io/download

2.去到国内的中文社区下载

www.qter.org/

QT 的组成 : QT SDK (一堆代码,QT官方封装好c++ 接口代码)

QT Create (QT 官方提供的集成开发工具,里面包含SDK 和 带界面的开发工具)


QT create 软件的使用

1.新建QT 工程

image-20210709143759689.png

2.创建QT 的窗体应用

image-20210709144058412.png

3.设置工程路径名 (不能出现任何的中文)

image-20210709144224946.png

4.设置类名

image-20210709144417242.png

5.编译器的选择

image-20210709144546792.png

QT 工程的分析

image-20210709150305063.png

xxxx.pro 工程配置文件

QT       += core gui   widgets   #添加QT的三大模块
core 核心模块   :提供信号与槽 ,事件 .... 
gui  界面模块   
widgets 窗体模块
    
    
CONFIG += c++11   #使用c++ 11的编译器进行代码的编译  
​
​
SOURCES += \          #添加源文件
    main.cpp \
    mainwindow.cpp
​
HEADERS += \           #添加头文件
    mainwindow.h
​
FORMS += \             #添加界面文件
    mainwindow.ui
​

XXXX.h头文件的解析

//添加QMainWindow 类的头文件
#include <QMainWindow>//开始定义一个命名空间 
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
​
//定义一个 MainWindow 继承  QMainWindow 
class MainWindow : public QMainWindow
{
    //QT 中的信号与槽的宏定义 
    Q_OBJECT
​
public:
     //构造函数 
    MainWindow(QWidget *parent = nullptr);
    //析构函数
    ~MainWindow();
​
private:
    Ui::MainWindow *ui; //定义一个 UI 窗体 
};

main.cpp 文件解析

//添加用户自定义窗体头文件
#include "mainwindow.h"
//添加QT 应用类
#include <QApplication>
//主函数
int main(int argc, char *argv[])
{
    //创建QT 应用对象
    QApplication a(argc, argv);
    //在应用中创建一个窗体
    MainWindow w;
    //显示窗体
    w.show();
​
    //执行应用
    return a.exec();  //一直轮询这个应用
​
    //注意:在窗体之前必须要有 应用, 所有窗体都是在应用上的
}

xxxx.cpp 文件的解析

#include "mainwindow.h"//添加ui_mainwindow.h 界面设计头文件,所有的界面设计都在该文件中进行
#include "ui_mainwindow.h" //不需要用户去管,这个文件是自动生成的//构造函数
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent),ui(new Ui::MainWindow)
{
    //调用 设置UI 的函数
    ui->setupUi(this);  //void setupUi(QMainWindow *MainWindow)
}
​
//释放分配的空间  ui(new Ui::MainWindow)
MainWindow::~MainWindow()
{
    delete ui;
}
​

练习: 自己去为 工程的每一句话,添加注释!!!

纯手工打造QT 工程

image-20210709154021313.png

2.QT 模块

#添加QT 三大模块
QT += core gui  widgets
​
TEMPLATE = app
​
CONFIG +=  c++11
​
SOURCES += \
        main.cpp
​

3.利用QT 官方提供的接口设计界面

#include <iostream>
​
using namespace std;
​
//添加一个QT的应用
#include <QApplication>//添加主界面的头文件
#include <QMainWindow>//添加标签头文件
#include <QLabel>//添加字体头文件
#include <QFont>int main(int argc, char **argv)
{
    cout << "Hello World!" << endl;
    //定义一个QT 应用
    QApplication  a(argc,argv);
   // QApplication(int &argc, char **argv)
​
    //为应用添加一个主界面
    QMainWindow mywin;
​
    //设置主窗体的大小
    mywin.setGeometry(200,200,800,480);
​
   //定义一个标签, 放在主窗体中
    QLabel lb(&mywin);
​
    //设置标签的字体
    lb.setText("Hello World!");
​
    //设置标签的位置
    lb.setGeometry(400,240,400,100);
​
    //设置标签的大小
    QFont f("宋体",20);
    lb.setFont(f);
​
    //显示主窗体
    mywin.show();
​
    //执行应用
    return a.exec();
}
​

QT 中的UI 设计师的使用

image-20210709160825334.png

控件的选择:

image-20210709161018796.png

属性的设置:

image-20210709161226026.png

image-20210709161352025.png

练习:利用UI 文件设置 自己的姓名学号,并在窗体中显示,

使用代码的方式设置UI

Qlabel 类常用接口

​
void clear() //清空qlabel 
void setMovie(QMovie *movie) //设置一张动态图
void setNum(int num) //设置数字
void setNum(double num) //设置浮点型数据 
void setPicture(const QPicture &picture) //设置图片 
void setPixmap(const QPixmap &) //设置图片  
void setText(const QString &) //设置文字
​
    
 使用例子: 
     ui->mylabel->setText("你好我好大家好");
​
     ui->label->setNum(10086);
​
  //设置一张图片 
 ui->label_2->setPixmap(QPixmap("C:/Users/Administrator/Desktop/pic/1.jpg"));
    

QT 中的帮助文档的使用

image-20210709164222358.png

2.显示类的使用要求

image-20210709164417136.png

image-20210709164522161.png 练习: 利用帮助文档查看 qstring 类的使用

QString 类使用

看类需要的一些模块 
Header:
#include <QString>   //头文件
qmake:
QT += core   //模块 

//构造函数 把一个字符串赋值到 QString 中 
QString(const char *str)


接口的使用: 
    
QString &append(const char *str) //追加字符串 
     
arg() //字符串拼接    
例子: 
    QString  msg1 = QString("%1 %2 							         %3").arg(123).arg("hello").arg(3.14);   

void QString::chop(int n) //从右边开始删除字符 
例子:
    QString str("LOGOUT\r\n");
    str.chop(2);
    // str == "LOGOUT"

 
int indexOf(const QString &str, int from = 0) const  //从from的位置开始查找str  

int lastIndexOf(const QString &str, int from = -1,) const //最后一次出现的位置

QString &insert(int position, const QString &str) //从position位置插入字符串str 
    
QString QString::left(int n) const //取左边 4  n个字符 
    

int length() const //返回字符串的长度  
QString QString::mid(int position, int n = -1) const //取中间部分字符串 
    
    
QString &remove(const QString &str) //直接删除  str 字符串  
    
 
QString &replace(const QString &before, const QString &after) //字符串替换 
  
    
 类型转换: 
   
double toDouble(bool *ok = nullptr) const
float toFloat(bool *ok = nullptr) const
 
QByteArray toUtf8() const //转换为linux 的文本格式

  //把整形转换为 QSTRING 类型   
QString number(long n, int base = 10)
    
    例子: 
     //把整形转换为QString 字符串
      QString  t = QString::number(a);
      qDebug() << t;
      qDebug() << t.toInt() + 100;

作业:利用QT 制作一个QQ 的登陆界面

image-20210709172942228.png