# QHexEdit **Repository Path**: gl2summer/QHexEdit ## Basic Information - **Project Name**: QHexEdit - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-05-19 - **Last Updated**: 2024-05-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README QHexEdit ======== This is an HexEdit widget for Qt Framework 5, it is released under MIT License. Features ----- - Big File Support. - Unlimited Undo/Redo. - Fully Customizable. - Easy to Use. - Python3 bindings Usage ----- The data is managed by `QHexEdit` through `QHexEditData` class. You can load a generic QIODevice using the method `fromDevice()` of `QHexEditData` class, also, helper methods are provided in order to load a `QFile` a In-Memory buffer in `QHexEdit`: ### Loading Data QHexEdit allows you to load data from an in-memory buffer, generic I/O device, or file. From an in-memory buffer (`QHexEditData` takes ownership of the object): ``` QHexEditData* hexeditdata = QHexEditData::fromMemory(bytearray); ``` From a generic I/O device: ``` QHexEditData* hexeditdata = QHexEditData::fromDevice(iodevice); ``` From a file: ``` QHexEditData* hexeditdata = QHexEditData::fromFile("data.bin"); ``` Create a new `QHexEdit` object and associate it with the `QHexEditData` object. ``` QHexEdit* hexedit = new QHexEdit(); hexedit->setData(hexeditdata); ``` ### Style Change background color: ``` hexedit->highlightBackground(0, 10, QColor(Qt::Red)); /* Highlight Background from 0 to 10 (10 included) */ ``` Change the foreground color: ``` hexedit->highlightForeground(0, 15, QColor(Qt::darkBLue)); /* Highlight from 0 to 15 (15 included) */ ``` Clear highlighting: ``` hexedit->clearHighlight(); ``` ## Comments Apply Comment ``` hexedit->commentRange(0, 12, "I'm a comment!"); ``` Remove a comment ``` hexedit->uncommentRange(0, 5); ``` Clear all comments ``` hexedit->clearComments(); ``` ### Reading and writing data Getting data ``` QHexEditReader reader(hexeditdata); quint32 a = reader.readUInt32(23); /* Read a 32 bit unsigned int from offset 23 using platform's byte order */ qint16 b = reader.readInt16(46, QSysInfo::BigEndian); /* Read a 16 bit unsigned short from offset 46 and convert it in Big Endian */ QByteArray data = reader.read(24, 78); /* Read 78 bytes starting from offset 24 */ ``` Writing data ``` QHexEditWriter writer(hexeditdata); writer.insert(4, QString("Hello QHexEdit").toUTF8()); /* Insert an UTF-8 string from offset 4 */ writer.remove(6, 10);/* Delete bytes from offset 6 to offset 10 */ writer.replace(30, 12, QString("New Data").toUTF8()); /* Replace 12 bytes from offset 30 with the UTF-8 string "New Data" */ ``` Python3 Bindings ---------------- To build the python bindings (on Linux), first build and install the shared library: ```bash qmake QHexEdit.pro make sudo make install ``` then build the python bindings: ```bash cd python python3 setup.py build sudo python3 setup.py install ``` There's a test.py program in the same directory that should show itself in the QHexEdit widget.