{"id":13894285,"url":"https://github.com/Dax89/QHexView","last_synced_at":"2025-07-17T09:31:44.388Z","repository":{"id":12834006,"uuid":"15509433","full_name":"Dax89/QHexView","owner":"Dax89","description":"A versatile Hexadecimal widget for Qt5","archived":false,"fork":false,"pushed_at":"2024-10-21T16:34:53.000Z","size":918,"stargazers_count":321,"open_issues_count":4,"forks_count":102,"subscribers_count":27,"default_branch":"5.0","last_synced_at":"2024-10-22T00:49:13.371Z","etag":null,"topics":["c-plus-plus","hex-editor","hexedit-widget","qt","qt-widgets","qt5"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dax89.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-12-29T14:17:16.000Z","updated_at":"2024-10-21T16:34:57.000Z","dependencies_parsed_at":"2023-12-10T11:27:10.092Z","dependency_job_id":"f06f62ac-b350-4941-9106-fed8756eeb6c","html_url":"https://github.com/Dax89/QHexView","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dax89%2FQHexView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dax89%2FQHexView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dax89%2FQHexView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dax89%2FQHexView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dax89","download_url":"https://codeload.github.com/Dax89/QHexView/tar.gz/refs/heads/5.0","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226248231,"owners_count":17595158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","hex-editor","hexedit-widget","qt","qt-widgets","qt5"],"created_at":"2024-08-06T18:01:28.572Z","updated_at":"2025-07-17T09:31:44.383Z","avatar_url":"https://github.com/Dax89.png","language":"C++","funding_links":["https://github.com/sponsors/Dax89"],"categories":["C++"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n \u003cimg src=\"https://user-images.githubusercontent.com/1503603/156148159-02d1181a-153e-4d0b-9512-5f9ac30bcd2f.png\" alt=\"QHexView logo\" title=\"QHexView\"/\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n \u003ci\u003eAn hexadecimal widget for Qt5 and Qt6\u003c/i\u003e\n \u003cbr\u003e\n \u003cbr\u003e\n \u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/1503603/157109542-55d12002-4829-404c-9b1c-2f3836f3c754.png\" height=\"400\"/\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-8e725e.svg?style=flat-square\"\u003e\n  \u003ca href=\"https://github.com/ellerbrock/open-source-badges\"\u003e\u003cimg src=\"https://badges.frapsoft.com/os/v1/open-source.png?v=103\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/sponsors/Dax89\"\u003e\u003cimg src=\"https://img.shields.io/badge/GitHub-Sponsors-ff69b4\"\u003e\u003c/a\u003e\n \u003c/div\u003e\n\u003c/div\u003e\n\nQHexView is a free, independent, MIT-licensed open-source project.\u003cbr\u003e\nIt began years ago as a simple viewer for hexadecimal data and has since evolved \ninto a highly customizable widget for managing binary data, thanks to valuable feedback from users. QHexView hides the complexity of \ndrawing and input, allowing users to focus on providing the data as a model.\n\n## Table Of Content\n- [Features](#features)\n- [Sponsors](#sponsors)\n- [Usage](#usage)\n  - [Loading Data](#loading-data)\n  - [Backends](#backends)\n\n## Features\n- **Document/View Architecture**: Built on a robust document/view design pattern.\n- **Unlimited Undo/Redo**: Seamlessly revert or reapply changes without limits.\n- **Fully Customizable**: Tailor every aspect to your specific needs.\n- **Fast rendering**: Optimized for speed and efficiency.\n- **Developer Friendly**: Intuitive and easy to integrate in your codebase.\n\n## Sponsors\nIf you enjoy using QHexView, consider supporting its development by [sponsoring me](https://github.com/sponsors/Dax89).\u003cbr\u003e\nYour support helps keep the project alive and thriving!\n\n## Usage\n\n### Loading Data\nQHexView manages data through the `QHexDocument` class.\u003cbr\u003e\nYou can load a generic `QIODevice` using the `QHexDocument` method `fromDevice()` with various buffer backends.\u003cbr\u003e\nAdditionally, helper methods are available to load a `QFile` as an in-memory buffer:\u003cbr\u003e\n```cpp\n#include \u003cQHexView/qhexview.h\u003e\n\nQHexOptions options;\noptions.grouplength = 2; // Pack bytes as AABB\noptions.bytecolors[0x00] = {Qt::lightGray, QColor()}; // Highlight '00's\noptions.bytecolors[0xFF] = {Qt::darkBlue, QColor()};  // Highlight 'FF's\nhexview.setOptions(options);\n\nQHexDocument* document = QHexDocument::fromMemory\u003cQMemoryBuffer\u003e(bytearray); /* Load data from In-Memory Buffer... */\n//QHexDocument* document = QHexDocument::fromDevice\u003cQMemoryBuffer\u003e(iodevice); /* ...from a generic I/O device... */\n//QHexDocument* document = QHexDocument::fromFile\u003cQMemoryBuffer\u003e(\"data.bin\"); /* ...or from File... */\n\nQHexView* hexview = new QHexView();\nhexview-\u003esetDocument(document);                  // Associate QHexEditData with this QHexEdit (ownership is not changed)\n\n// Document editing\nQByteArray data = document-\u003eread(24, 78);        // Read 78 bytes starting to offset 24\ndocument-\u003einsert(4, \"Hello QHexEdit\");           // Insert a string to offset 4 \ndocument-\u003eremove(6, 10);                         // Delete bytes from offset 6 to offset 10 \ndocument-\u003ereplace(30, \"New Data\");               // Replace bytes from offset 30 with the string \"New Data\"\n\n// Metatadata management (available from QHexView too)\nhexview-\u003esetBackground(5, 10, Qt::Red);         // Highlight background at offset range [5, 10)\nhexview-\u003esetForeground(15, 30, Qt::darkBLue);   // Highlight background at offset range [15, 30)\nhexview-\u003esetComment(12, 42, \"I'm a comment!\");  // Add a comment at offset range [12, 42)\nhexview-\u003eunhighlight();                         // Reset highlighting\nhexview-\u003eclearMetadata();                       // Reset all styles\n```\n\n### Backends\nThese are the available buffer backends:\n- **QMemoryBuffer**: A simple, flat memory.\n- **QMemoryRefBuffer**: QHexView just display the referenced data, editing is disabled.\n- **QDeviceBuffer**: A read-only view for QIODevice.\n- **QMappedFileBuffer**: MMIO wrapper for QFile.\n\n*It's also possible to create new data backends from scratch!*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDax89%2FQHexView","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDax89%2FQHexView","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDax89%2FQHexView/lists"}