【QT】——1_QT学习笔记

QT学习笔记:概念、要点与实践

一、QT是什么?

QT 是一个功能强大、应用广泛的跨平台 C++ 应用程序开发框架,它不仅提供了丰富多样、美观实用的图形界面组件,还具备高效灵活的信号与槽通信机制,能够帮助开发者轻松构建出复杂且性能优越的应用程序,广泛应用于桌面应用、移动应用、嵌入式系统等众多领域。

对比维度 QT(基于 C++) C#
语言类型 C++ 是一种中级编程语言 C# 是一种高级编程语言
运行平台 跨平台(Windows、Mac、Linux 等) 主要在 Windows 平台上表现出色,也支持跨平台但相对较弱
内存管理 手动内存管理,需要开发者自行处理 自动内存管理,减少内存泄漏风险
性能 通常在性能关键型应用中表现较好 性能也不错,但可能略逊于 C++ 在某些场景
开发效率 相对较低,需要更多的底层代码编写 较高,有丰富的库和工具支持
语法复杂度 语法相对复杂 语法较为简洁易懂
应用领域 多用于嵌入式系统、工业控制等 常用于 Web 应用、Windows 桌面应用、游戏开发等
社区支持 社区活跃,资源丰富 社区强大,有大量的开源项目和文档

二、QT中需要掌握什么?

1、C++编程语言:
(1)基本语法:变量,数据类型,控制结构;
(2)理解面向对象编程的概念:类,对象,继承,多态等
(3)内存管理:指针、动态内存分配等


2、QT 框架基础知识:
(1)了解QT的架构和工作原理
(2)熟悉 QT 的信号与槽机制
(3)掌握 QT 的窗口部件(Widgets)


3、图形用户界面(GUI)设计:
(1)控件布局
(2)学会自定义窗口部件的外观和行为


4、事件处理
(1)处理各种用户交互事件,如鼠标点击、键盘输入等
(2)理解事件的传播和捕获机制


5、数据存储和处理
(1)学会使用 QT 提供的数据结构和容器,如 QList、QMap 等
(2)掌握文件读写操作,以便保存和加载数据


6、多线程编程
(1)在 QT 中创建和管理多线程,以提高程序的性能和响应性
(2)处理多线程之间的同步和通信问题

三、安装

四、实践小实验

1、UI设计

自定义窗口部件的外观和行为,添加组合框;
在这里插入图片描述

2、信号与槽机制和事件处理

#include "widget.h"
#include "ui_widget.h"

#include <QMessageBox>
#include <QDebug>
#include <QFile>
#include <QFileDialog>
#include <QTimer>
#include <QStringList>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
   
   
    ui->setupUi(this);
    resize(800,600);                                //窗口限制

    setWindowTitle("Serial_Port");
    SendByte=0;ReceByte=0;
    serial = new QSerialPort(this);

    ui->comboBox_2->setCurrentIndex(5);             //初始化
    ui->comboBox_3->setCurrentIndex(3);
    ui->comboBox_4->setCurrentIndex(2);
    ui->comboBox_5->setCurrentIndex(0);
    ui->lineEdit->setText("1000");
    ui->checkBox->setCheckState(Qt::Checked);
    ui->checkBox_4->setCheckState(Qt::Checked);
    ui->pushButton_7->setEnabled(false);
    ui->checkBox_7->setEnabled(false);
    connect(serial,SIGNAL(readyRead()),             //信号与槽函数
            this,SLOT(serialPort_readyRead()));

    Times=0;portTime=0;
    lineEditData=1000;

    timer = new QTimer;
    timer->start(1);
    //connect(timer,&QTimer::timeout,this,&Widget::TimerEvent);
    connect(timer,SIGNAL(timeout()),this,SLOT(TimerEvent()));       //信号与槽函数
}

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

void Widget::on_pushButton_2_clicked()
{
   
   
    if(ui->pushButton_2->text()==QString("打开串口"))
    {
   
   
        //设置串口名
        serial->setPortName(ui->comboBox->currentText());
        //设置波特率
        serial->setBaudRate(ui->comboBox_2->currentText().toInt());
        //设置数据位
        switch(ui->comboBox_3->currentText().toInt())
        {
   
   
        case 5:serial->setDataBits(QSerialPort::Data5);break;
        case 6:serial->setDataBits(QSerialPort::Data6);break;
        case 7:serial->setDataBits(QSerialPort::Data7);break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值