b.修改UI设计师类的.h和.cpp,调用功能接口进行测试
跟之前接口类调用基础串口类一样
//.h
#include "serialtest.h"
private:
SerialTest* m_serialtest;
//构造函数中
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_serialtest = new SerialTest();
}
1.以查找端口按钮为例,使用时:m_serialtest->serialtest_FindPorts();
//.h
private slots:
void on_btn_findports_clicked();
//.cpp
void MainWindow::on_btn_findports_clicked()
{
ui->cmb_ports->clear();
QString ports = m_serialtest->serialtest_FindPorts();
QStringList portsList = ports.split(",");
portsList.removeAll(QString(""));
//UI中ComboBox控件,可以直接addItems
ui->cmb_ports->addItems(portsList);
ui->btn_connect->setEnabled(true);
}
2.连接按钮,包括一个QPalette类,根据返回的结果改变按钮颜色和显示的文字
//.h
private slots:
void on_btn_connect_clicked();
private:
QPalette pal;
//.cpp
void MainWindow::on_btn_connect_clicked()
{
if (ui->btn_connect->text() == "Connect")
{
QString m_port = ui->cmb_ports->currentText();
int m_baudRate = ui->cmb_baudrate->currentText().toInt();
bool result = m_serialtest->serialtest_ConnectSerial(m_port, m_baudRate);
ui->btn_connect->setAutoFillBackground(true);
ui->btn_connect->setFlat(true);
//.h中定义的QPalette 具体指向btn_connect进行操作
pal = ui->btn_connect->palette();
//根据调用返回的result ,改变btn_connect的颜色文字和状态
if (result)
pal.setColor(QPalette::Button, Qt::green);
else
pal.setColor(QPalette::Button, Qt::red);
ui->btn_connect->setPalette(pal);
ui->btn_connect->setText(result ? "Disconnect" : "Connect");
ui->btn_send->setEnabled(result);
}
else
{
m_serialtest->serialtest_DisconnectSerial();
pal.setColor(QPalette::Button, Qt::yellow);
ui->btn_connect->setPalette(pal);
ui->btn_connect->setText("Connect");
ui->btn_send->setEnabled(false);
}
}
3.发送数据按钮(调用发送接口,从输入框获取数据发送,显示在输出文字框中,并更新历史记录的combo box下拉框)
//.h
private slots:
void on_btn_send_clicked();
private:
QStringList historyMessage;
//.cpp
void MainWindow::on_btn_send_clicked()
{
QString m_sendData = ui->line_send->text();
//先不使用isHex的选项,默认qstring
QString strReceive = m_serialtest->serialtest_SendData(m_sendData, false);
//用append把接收到的QString 输入
ui->text_receive->append(strReceive);
//历史记录框
ui->cmb_history->clear();
//从List头部插入最新的数据
if (!historyMessage.contains(m_sendData))
historyMessage.prepend(m_sendData);
//把记录的QStringList 更新到下拉框中
ui->cmb_history->addItems(historyMessage);
}
4.清空数据按钮(需要手动操作情况输入框和输出框的内容)
//.h
private slots:
void on_btn_clear_clicked();
//.cpp
void MainWindow::on_btn_clear_clicked()
{
ui->line_send->clear();
ui->text_receive->clear();
}
5.槽函数.历史下拉框进行选项时自动触发,输入框自动变为被选择的值
//.h
void on_cmb_history_currentTextChanged(const QString& arg1);
//.cpp
void MainWindow::on_cmb_history_currentTextChanged(const QString& arg1)
{
ui->line_send->setText(arg1);
}
下面进行操作:
1.查找串口
2.连接
3.发送
整个项目的代码在资源部份有上传。