- 第一步:Qt 用到哪一项功能,需要在 ".pro" 中的 "QT += " 后面将该功能对应的类的名字写上;例如
QT += serialport
- 第二步:在“.h”文件中加入必要的头文件;例如
#include <QSerialPort>
- 第三步:槽slots的声明,这一步也是在“.h”文件中写;例如
private slots: //button void btn_open_port(bool); void btn_close_port(bool); void btn_send_data(bool); //receive data void receive_data();
- 第四步:到了“mian.cpp”文件,基本不改,重点在于第五步
- 第五步:重点来了,例如对于serial这个项目来说就是到了“serial.cpp”这个文件,
-
- 首先,是函数 functions ,内容包括一些serialport的初始化设置啊、ui中的按键与槽函数的连接啊等等。例如
/*-------------------------------------------------------- * functions * ------------------------------------------------------*/ void Serial::system_init() { //port config global_port.setParity(QSerialPort::NoParity); global_port.setDataBits(QSerialPort::Data8); global_port.setStopBits(QSerialPort::OneStop); //connect connect(ui->btn_open,&QPushButton::clicked,this,&Serial::btn_open_port); connect(ui->btn_close,&QPushButton::clicked,this,&Serial::btn_close_port); connect(ui->btn_send,&QPushButton::clicked,this,&Serial::btn_send_data); connect(&global_port,&QSerialPort::readyRead,this,&Serial::receive_data); }
其次,是slots,也就是编写槽函数,上例中的“//connect”里面列出了极为详细的 ui中的按键与槽函数的连接,分别编写每一个的槽函数。例如
void Serial::btn_open_port(bool) { ... } void Serial::btn_close_port(bool) { global_port.close(); ui->lab_status->setText("Disconnected"); } void Serial::btn_send_data(bool) { QString data = ui->lint_send_data->text(); QByteArray array = data.toLatin1();//QString->QByteArray global_port.write(array); } void Serial::receive_data() { QByteArray array = global_port.readAll(); qDebug()<<array; if(ui->checkBox->checkState() == Qt::Checked){ ui->plainTextEdit->insertPlainText(QString(array.toHex(' ').toUpper().append(' '))); }else{ ui->plainTextEdit->insertPlainText(QString(array)); } }
- 首先,是函数 functions ,内容包括一些serialport的初始化设置啊、ui中的按键与槽函数的连接啊等等。例如