首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt - subclassing为文本小部件提供另一种视图?

Qt - subclassing为文本小部件提供另一种视图?
EN

Stack Overflow用户
提问于 2011-06-16 02:50:45
回答 1查看 1.4K关注 0票数 1

目前,我正处于Qt小部件的设计阶段,就像人们在典型的十六进制编辑器中看到的那样。它一开始似乎很简单,但当我深入研究它的实现细节时,我有一些困惑。

基本上,小部件将由3个核心组件组成:它将继承QAbstractScrollArea或QScrollArea来提供滚动,并且在视口边距中,它将显示每行的文件偏移量。然后将有两个文本编辑器;一个使用文件的每个字节的十六进制值,另一个使用明文字符表示。

当然,我首先在qt-apps.org上查看了任何现有的小部件,但是搜索“hex”只返回了QHexEdit和qPHexEditor,这两个都不是很完整。然后我考虑完全从零开始创建一个小部件,就像他们所做的那样,但我觉得应该有一个更优雅的解决方案。Qt已经在QTextEdit和QPlainTextEdit中内置了很多文本编辑器功能;为什么要重新发明轮子呢?

现在,虽然“纯文本视图”就像使用一个宽度固定、宽度为16个字符的QPlainTextEdit一样简单,但“十六进制视图”却让我头疼。我一直在研究QTextEdit、QAbstractTextDocumentLayout等,试图找出一种呈现所需外观的方法。对于那些从未使用过十六进制编辑器的人,它的功能应该是这样的:-使用固定宽度的字体,widget的宽度应该是47个字符- Widget应该显示每个字节2个十六进制字符,字节之间有一个空格--每行16个字节

从那时起,我一直在尝试弄清楚如何对任何相关类进行子类化,以提供所需的格式。不幸的是,文本编辑类似乎并不像我希望的那样严格遵循模型/视图框架,因此为它派生一个新的“视图”似乎并不容易。理想情况下,小部件的功能如下:

一个用于“十六进制”和“明文”视图的文档/模型。编辑任何一个视图都会调整此模型,并相应地更新另一个视图。信号/插槽处于最佳状态。因为QTextEdit和QPlainTextEdit已经提供了许多所需的功能(可见光标、选择、撤消/重做、原生外观等),所以重用它将是理想的。

那么,有没有人有什么建议?我很感谢你对此的任何意见。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-12 04:35:34

QHexEdit2是一个非常完整的二进制数据编辑器小部件。它可以编辑非常大的文件,可用于Qt4,Qt5,PyQt4,PyQt4与Python2和3。

请参阅https://github.com/Simsys/qhexedit2

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6362756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档