Easy way to download files with Qt QML and C++
- Asynchronous downloads
- Supports Qt URL schemes (http, https, ftp, custom)
- Uses QSaveFile = no corrupt or partial file downloads.
- Possible to set custom NetworkAccessManager via C++
- Self-register QML type. Plug'n'play.
Setup qpm as described in the Usage for App Developers section
qpm install com.blackgrain.qml.quickdownload cd /path/to/projects git clone git@github.com:Larpon/QuickDownload.git Open quickdownload.pro in QtCreator and build. The result should be a *.so plugin file.
Clone from github
cd /path/to/your/qt/project/vendor/folder git clone git@github.com:Larpon/QuickDownload.git Include quickdownload.pri in your projects .pro file
include(<path to extensions/vendor folder>/QuickDownload/quickdownload.pri) NOTE quickdownload.pri auto-register the QML type Download via the Q_CORE_STARTUP_FUNCTION macro.
import QtQuick 2.0 import com.blackgrain.qml.quickdownload 1.0 Item { Download { id: download1 url: "http://placehold.it/350x150" destination: "file:///tmp/test.png" running: true followRedirects: true onRedirected: console.log('Redirected',url,'->',redirectUrl) onStarted: console.log('Started download',url) onError: console.error(errorString) onProgressChanged: console.log(url,'progress:',progress) onFinished: console.info(url,'done') } Download { id: download2 url: "ftp://speedtest.tele2.net/5MB.zip" destination: "file:///tmp/QuickDownload_test.zip" overwrite: true running: !download1.running onStarted: console.log('Started download',url) onError: console.error(errorString) onProgressChanged: console.log(url,'progress:',progress) onFinished: console.info(url,'done') } Download { id: download3 url: "ftp://demo:password@test.rebex.net/readme.txt" destination: "file:///tmp/QuickDownload_test_readme.txt" overwrite: true running: true onStarted: console.log('Started download',url) onError: console.error(errorString) onProgressChanged: console.log(url,'progress:',progress) onFinished: console.info(url,'done') } }