前言
使用Qt编写一个类似串口助手的小工具,刚开始使用qt自带的QTextEdit类显示,在使用中发现存在诸多问题,首先最令人诟病的是QTextEdit的自动换行,每次调用append方法后会自动换新行。不知道有没有方法关闭这一特性,反正我是没找到。另一方面当数据量比较大的时候界面卡到爆炸,拖动窗口都拖不动。
所以考虑自己实现一个显示控件用来显示这些串口数据,参考了一个抓包软件的显示方法既能显示16进制又能显示字符串的界面,同时因为自己实现的功能比较专注于显示,没有其它用不到的功能,所以运行效率会比较高。界面如下:
功能介绍
该显示控件功能为显示QByteArray类型数据,特性如下:
-
十六进制和字符串分块显示,同时内容关联,当鼠标选择16进制数据区时字符串区内容也会处于选定状态。
-
自定义选择复制内容,可以选择复制16进制或者字符串内容。
-
可以设置每行显示数据大小,默认每行显示16个字符,设置范围是2-64。
-
全选和清除内容功能。
-
自动滚屏功能,可以选择开启或者关闭自动滚屏功能,开启后视图会永远保留在最底端。
以上功能都可以通过右键界面进行操作。这里写了一个调用的demo,每次点击添加测试数据都会模拟串口接收到数据添加到显示控件,演示效果如下: