QT学习之上位机串口通信工具实现

系列文章目录

QT下载

QT下载网上有很多教程,一个是通过国内镜像网站下载(比较快),还有官网下载等,网上有许多链接,这里附上我参考的几个链接,我官网和镜像都下过,都是可以的,大家自行选择。
QT与Qt Creator
QT5.11下载与安装教程
我是从官网下载的QT,我觉得还行,花了估计两个小时不到的感觉就下完了。

QT creator如何使用免费开源版本

QT creator如何使用免费开源版本:
现在网上很多参考文章上的QT都不是最新版,而最新版的UI界面换了,可能有些会有问题,我之前一直只让下载商业版本的QT Creator后面搞了半天,终于突然允许我下社区community版本的QT了,然后下完之后,还面临这kit不符合的问题,搜索了半天,还配置了环境变量、重新装了windows sdk之后就搞定了。
所以有人碰到kits不行,有很多问题,比如说没有下载visual studio里的关于C++桌面开发的配置,windows sdk没有更新上,环境变量没有配置等。
如果想临时用,你可以就是通过商业版本新建一个项目然后debug后就有一个临时可以用的kits可以导入这个配置给社区的qt creator用,但是因为许可证限制问题,所以这个也只是临时的。所以如果想要长久的使用,请按照我上面说的问题,先检查一下,然后就可以了。

QT概述

QT是一个跨平台的C++的图形用户界面(GUI)应用框架,提供了丰富的窗口部件集,面向对象、易于扩展、真正的组件编程等特点。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

QT简单小程序制作

代码示范

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton>
#include <QLabel>
#include <QImage>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    
    
    ui->setupUi(this);

    //QPushButton使用方式1,无需setParent,直接创建显示
    QPushButton * btn1 = new QPushButton("1",this);
    // 设定按钮的大小
    btn1->resize(100,100);
    //设置按钮的位置和大小:setGeometry(QRect(ax, ay, aw, ah))前两个参数为位置坐标,后两个参数为大小
    btn1->setGeometry(80,60,60,60);
    // 自动调整按钮的大小,以适应其内容;
    btn1->adjustSize();

    //QPushButton使用方式1,使用setParent显示
    QPushButton *btn2 = new QPushButton;
    btn2->setParent(this);
    btn2->move(100,100);
    btn2->resize(100,100);
    //设置按钮文本信息
    QIcon button_icon(":/icon/2.png");
    btn2->setText("2");
    btn2->setIcon(button_icon);
    btn2->setIconSize(QSize(30,30));
    btn2->setFont(QFont("宋体",30));


    //直接添加图片
    QLabel * logo_label = new QLabel("Logo",this);
    logo_label->move(200,200);
    QImage * logo_img = new QImage(":/icon/2.png");
    QImage * scaled_logo_img = new QImage();
    *scaled_logo_img=logo_img->scaled(30,30,Qt::KeepAspectRatio);
    logo_label->setPixmap(QPixmap::fromImage(*scaled_logo_img));

    //使用lambda表达式实现点击按钮、关闭窗口
    QPushButton * btn3 = new QPushButton("3",this);
    btn2->move(300,300);
    connect(btn3,&QPushButton::clicked, this ,[=](){
    
    
        btn3->setText("点到啦");
    });
}

MainWindow::~MainWindow()
{
    
    
    delete ui;
}

 - List item

运行的图,后续会讲完原理,在后面详细讲解一下这个代码的使用

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

按钮的创建

对象树

窗口坐标体系

QT核心机制:信号和槽

Lambda表达式

在这里插入图片描述
之前的QT需要加上这个配置去包含c++11的特性,这样才会包含lambda表达式,关于c++特性的。我会附上别人写的链接,如果后期有空,我就会在这里继续补充和总结。
在这里插入图片描述

在这里插入图片描述

QMainWindow

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

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

QT核心机制:信号和槽

信号和槽是一种高级接口,应用于对象之间的通信,是QT的核心特性,也是QT区别于其他工具包重要地方。信号和槽是QT自行定义的一种通信机制。
如何正确处理信号和槽,需要借助一个moc的QT工具,该工具是一个C++预处理程序。
1.信号和槽类似于回调函数,因为回调函数通常是一个指向某个函数的指针,信号和槽能携带任意数量和类型的参数,他们的类型完全安全。
2.信息封装:从QObject或其子类(如Qwidget)派生的类都能包含信号与槽,当对象改变其状态时,信号就由该对象发射(emit)出去,这就是对象所要做的全部事情,它不知道另一端谁在接受这个信号。
3.槽用于接受信号,一个槽并不知道是否有任何信号与自己相连接,而且对象并不了解具体的通信机制,因此可以将很多信号与单个槽进行连接,也可以将单个信号与很多槽连接或一个信号与另外一个信号连接。

QT信号与槽
原理详细可看
信号与槽原理

QT如何添加第三方库文件

添加lib库文件

一.添加第三方的头文件
首先,添加头文件 #include “ControlCAN.h”
然后,再将这个头文件放到工程的目录下。

二.添加.lib文件
首先,将.lib文件放到对应的工程目录下(当然,放到其他路径也可以)。
但是,仅仅做这一步是不行的,工程不会主动去包含这个.lib文件,你必须告诉他,lib文件在哪里,才可以。
然后,在QT的工程中,你会看到一个.pro文件,比如,我的工程名为test_qt,那么我的文件就是test_qt.pro文件,在整 个QT界面的左上角,.pro文件是管理整个工程的,当要打开一个工程的时候,只要打开.pro,就可以打开整个工 程的所有东西。

    所以,我们要做的,就是在.pro文件中,加上一句话,告诉工程,.lib在哪里

LIBS += -LE:/project/QT/usbcan_info/ -lControlCAN

下面对这句话进行解析:

1)+=这个符号是连接在一起的,不要自做聪明,给分开了,写成+ = ,这样就是错的!

2)+=的左右两边可以有空格,也可以没有空格,随意的

3)-L之后紧接着就跟着.lib文件所在的目录,比如,我的目录是在E盘下的project目录下的QT目录下的usbcan_info下,注意,是紧跟着,不要分开,分开就错啦!

4)-l后面跟着的是.lib的文件名,注意,比如你的.lib文件时ControlCAN.lib,不要傻乎乎的写成了-lControlCAN.lib,不要带后缀,要写成-lControlCAN,同样,-l后面也没有空格

完成以上的操作,就可以指定.lib文件了。其实说穿了很简单,就是把.lib随便放到一个目录下,然后告诉工程,你的.lib放到哪里了,叫什么名字。

添加lib库

总结

参考视频

猜你喜欢

转载自blog.csdn.net/qq_43614246/article/details/123135054