Qt-子类化为文本小部件提供替代视图?

问题描述

| 目前,我正处于Qt小部件的设计阶段,就像在典型的十六进制编辑器中看到的那样。乍看起来似乎很简单,但是当我深入研究其实现细节时,我有些困惑。 基本上,小部件将由3个核心组件组成:它将继承QAbstractScrollArea或QScrollArea以提供滚动,并且在视口边距中将显示每行的文件偏移量。然后将有两个文本编辑器;一个带有文件每个字节的十六进制值,另一个带有明文字符表示形式。 当然,我首先检查了qt-apps.org是否存在任何现有的小部件,但是搜索“ hex”仅返回QHexEdit和qPHexEditor,但它们都不是很完整。然后,我考虑像他们一样从头开始完全创建一个小部件,但是觉得应该有一个更优雅的解决方案。 Qt已经在QTextEdit和QPlainTextEdit中内置了许多文本编辑器功能。为什么要重新发明轮子? 现在,尽管“纯文本视图”就像使用QPlainTextEdit(具有固定宽度的字体和16个字符的宽度)那样简单,但“十六进制视图”却让我头疼。我一直在研究QTextEdit,QAbstractTextDocumentLayout等,试图找出一种呈现所需外观的方法。对于从未使用过十六进制编辑器的用户,它应具有以下功能:–使用固定宽度的字体,小部件的宽度应为47个字符–小部件的每个字节应显示2个十六进制字符,字节之间留有空格-每行16个字节 从那时起,我一直在尝试找出如何对所有相关类进行子类化以提供所需的格式。不幸的是,文本编辑类似乎并没有像我希望的那样紧密地遵循模型/视图框架,因此要获得新的“视图”似乎并不容易。理想情况下,小部件的功能如下: “十六进制”和“纯文本”视图的一个文档/模型。编辑任何一个视图都会调整该模型并适当地更新另一个视图。信号/插槽处于最佳状态。 因为QTextEdit和QPlainTextEdit已经提供了所需的许多功能(可见光标,选择,撤消/重做,本机外观等),所以重用此功能是理想的。 那么,有人有什么建议吗?我对此表示感谢。     

解决方法

        QHexEdit2是一个非常完整的二进制数据编辑器小部件。它可以编辑非常大的文件,可用于带有Python 2和3的Qt4,Qt5,PyQt4,PyQt4。 参见https://github.com/Simsys/qhexedit2     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...