alvin-xian / QArchive

:dog: C++ Cross-Platform library :ring: that Modernizes :rocket: libarchive using Qt5 :paintbrush: . Simply extracts 7z :hamburger: , Tarballs :8ball: and other supported formats by libarchive. :heart:

Home Page:https://antony-jr.github.io/QArchive

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

QArchive Logo

QArchive GitHub issues GitHub forks GitHub stars GitHub license Codacy Badge Travis Build status Appveyor Build status

QArchive is a cross-platform C++ library that modernizes libarchive , This library helps you to extract and compress archives supported by libarchive. The whole library itself is crafted to work perfectly well with the Qt event loop and thus its a perfect fit for your Qt projects.

I personally made this project to extract .7z archives in order to create a library that can update Qt Apps installed via Qt Installer Framework without using the updater tool provided by Qt , because I hated using sub-process and besides I wanted a in-built updater for my application and thats not possible with the already provided updater from Qt Installer Framework.

Features

  • Single threaded and Non-Blocking API - Using Qt's Event Loop. (you can optionally run in a different thread)

  • Easy to Use API - Made some effort to match Qt's style.

  • Cyclic API , No use of mutex - The whole library is fully cyclic and therefore no mutex is used.(Only signals and slots.)

  • Drink the Qt Kool-aid - In a positive way.

Witness it with your own eyes,

#include <QCoreApplication>
#include <QArchive>

int main(int argc, char **argv)
{
    using QArchive::DiskExtractor;
    QCoreApplication app(argc, argv);
    DiskExtractor Extractor("Test.7z");
    
    /* Connect Signals and Slots. */
    QObject::connect(&Extractor , 
                     &DiskExtractor::finished , 
                     &app , 
                     &QCoreApplication::quit);
    
    Extractor.start();
    return app.exec();
}

Getting Started

Learn more about QArchive at the official documentation.

Contributors QArchive Contributors

My utmost gratitude goes to these people! ❤️


Matthieu Petiot
💻

Adrien Bertrand
💻

Albert Huang
💻

Ichiro
💻

You can also become one of them by contributing to this project , to know more read CONTRIBUTING.md.

Thank You Thank You

I really need to thank the developers of this libraries for creating it because QArchive is elegant because of them! ❤️

Support Twitter

If you think that this project is cool then you can give it a ⭐ or 🍴 it if you want to improve it with me. I really ❤️ stars though!

License

The BSD 3-clause "New" or "Revised" License.

Copyright (C) 2017 , antony jr.
All Rights Reserved.

About

:dog: C++ Cross-Platform library :ring: that Modernizes :rocket: libarchive using Qt5 :paintbrush: . Simply extracts 7z :hamburger: , Tarballs :8ball: and other supported formats by libarchive. :heart:

https://antony-jr.github.io/QArchive

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:C++ 48.4%Language:C 43.5%Language:JavaScript 6.7%Language:QMake 0.6%Language:CMake 0.5%Language:CSS 0.2%