什么是QT ???
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.通过官方渠道下载
2.去到国内的中文社区下载
QT 的组成 : QT SDK (一堆代码,QT官方封装好c++ 接口代码)
QT Create (QT 官方提供的集成开发工具,里面包含SDK 和 带界面的开发工具)
QT create 软件的使用
1.新建QT 工程
2.创建QT 的窗体应用
3.设置工程路径名 (不能出现任何的中文)
4.设置类名
5.编译器的选择
QT 工程的分析
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 工程
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 设计师的使用
控件的选择:
属性的设置:
练习:利用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 中的帮助文档的使用
2.显示类的使用要求
练习: 利用帮助文档查看 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;