当前位置:   article > 正文

Qt5学习笔记之bin文件合成工具四:打包程序、修改为CAN帧ID解析工具、ping数据处理工具_bin文件拼包工具

bin文件拼包工具

概述

在这篇文章中,对程序进行一些完善,然后打包。

增加bin文件大小显示

增加bin文件大小的显示,这样使用过程中如果选错了文件,比如IAP选成了APP,那么从文件大小就能直观看出来。首先调整我们的界面布局:
在这里插入图片描述
程序实现上,主要涉及知识点为int转换成QString、小写字母转换为大写字母:

	QString appsize = QString("0x%1").arg(info.size(), 8, 16, QLatin1Char('0'));
	appsize = appsize.toUpper();
	ui->appsizeEdit->setText(appsize);
  • 1
  • 2
  • 3

增加MD5值计算

暂时不添加,后续完善。

增加图标打包程序

参考前面的Qt5学习笔记之串口助手三:设置图标、打包成Windows软件即可。

CAN帧ID解析工具

//2022.08.15补充。
打算做一个小工具,对CAN的扩展帧ID进行解析,方便调试查看数据。功能很简单,且与bin文件合成工具有很多相似之处。所以基于bin文件合成工具,进行修改完成。主要涉及以下内容:
1.设置标题。只需要在Widget的构造函数中增加一句:

setWindowTitle("CAN扩展帧ID解析");
  • 1

注意要放在ui->setupUi(this);后面。

2.QLabel文本换行。在需要换行的位置输入\n即可,如[7:0]\nindex
在这里插入图片描述
3.限制QLabel输入文本的最大长度为2。选中QLineEdit之后,在右下角的属性框中找到text下面的maxLength。
4.设置背景文字。可以使用代码:

ui->srcEdit_in->setPlaceholderText("输入");
  • 1

也可以选中QLineEdit之后,在右下角的属性框中找到text下面的maxLength,在后面写入文本即可。
5.设置文本颜色

    //设置文本的颜色,背景文本的颜色也会修改
    QPalette palette;
    palette.setColor(QPalette::Text, QColor(196, 196, 196));  //灰色
    ui->srcEdit_in->setPalette(palette);
	ui->srcEdit_in->setStyleSheet("QLineEdit{color:rgb(33, 33, 33);}");   //无效,需确认
    ui->srcEdit_in->setStyleSheet("QLineEdit{color: 0x999999;}");   //无效,需确认    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

6.修改只读框的颜色。在构造函数中增加:

	//ui->extEdit_out->setStyleSheet("background-color:rgba(0,196,196,196)");
    ui->extEdit_out->setStyleSheet("background:lightGray");   //设置背景为浅灰色
  • 1
  • 2

可以通过rgb值来设置颜色,要求不高也可以直接使用在帮助里搜索支持的颜色:
在这里插入图片描述

7.增加历史记录。主要是格式化字符串。
8.禁止调节界面大小。因为一些空间使用了固定大小,所以希望运行后界面是固定的,不能拖动改变大小,避免界面不协调。可以使用setMinimumSizesetMaximumSize将最大最小尺寸设置成相同大小,也可以直接在构造函数中增加:

	this->setFixedSize(width(),height()); //固定窗口为当前设计的大小尺寸
    //this->setFixedSize(910, 530);
  • 1
  • 2

设置后界面右上角的最大化窗口变为灰色不可用。
在这里插入图片描述

ping数据处理工具

拖拽文件

参考链接:QT:从外部拖拽文件到QWidget中,获取其文件的路径(单文件和多文件)。分为4步实现:
1.在Widget类中添加声明

protected:
    void dragEnterEvent(QDragEnterEvent* ev) override;
    void dropEvent(QDropEvent* ev) override;
  • 1
  • 2
  • 3

2.添加头文件

#include <QDragEnterEvent>
#include <QDropEvent>
#include <QMimeData>
  • 1
  • 2
  • 3

3.重写 dragEnterEvent 和 dropEvent 事件

//拖动进入事件
void Widget::dragEnterEvent(QDragEnterEvent *ev)
{
    if(ev->mimeData()->hasUrls())//是否是文件路径
    {
        ev->accept();//接收拖动进入事件
    }
    //ev->ignore();//若忽略该事件,则不会发生之后的事件,拖放到此结束
}
 
 
//拖动放下事件
void Widget::dropEvent(QDropEvent *ev)
{
    if(ev->mimeData()->hasUrls())
    {
        QList<QUrl> urls = ev->mimeData()->urls();
        
        //单个文件路径
        //QString fileName = urls.at(0).toLocalFile();
        //qDebug()<<fileName;
 
        //多个文件路径
        for(int i=0; i<urls.size(); i++)
        {
            qDebug()<<urls.at(i).toLocalFile();
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

4.在构造函数中启用

setAcceptDrops(true); // Widget 允许拖拽操作
  • 1

这样在编译运行后,将文件拖放到窗口,会打印出文件的路径信息
在这里插入图片描述
想要提取文件名,则在dropEvent函数中增加

        QString fileName;
        fileName = ev->mimeData()->urls()[0].fileName();        //只提取文件名
        ui->filepathEdit->setText(fileName);
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/306805
推荐阅读
相关标签
  

闽ICP备14008679号