仿写一个串口调试exe(三):写UI文件测试功能接口,并根据调用的结果改变ui的控件状态

18 篇文章 0 订阅

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.发送
在这里插入图片描述
整个项目的代码在资源部份有上传。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值