├── .clang-format ├── .travis.yml ├── LICENSE ├── QProgressIndicator ├── QProgressIndicator.cpp ├── QProgressIndicator.h ├── QProgressIndicator.py ├── README.md ├── example.pro ├── main.cpp ├── qpm.json ├── qprogressindicator.pri ├── screen-capture-1.png └── screen-capture-2.png /.clang-format: -------------------------------------------------------------------------------- 1 | BasedOnStyle: Mozilla 2 | IndentWidth: '4' 3 | ColumnLimit: 100 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: cpp 2 | 3 | os: 4 | - linux 5 | - osx 6 | 7 | branches: 8 | only: 9 | - master 10 | 11 | matrix: 12 | include: 13 | - compiler: clang 14 | os: linux 15 | dist: trusty 16 | env: 17 | - QMAKESPEC=linux-clang 18 | - QT_BASE=57 19 | - compiler: gcc 20 | os: linux 21 | dist: trusty 22 | env: 23 | - QMAKESPEC=linux-g++ 24 | - QT_BASE=48 25 | - compiler: gcc 26 | os: linux 27 | dist: trusty 28 | env: 29 | - QMAKESPEC=linux-g++ 30 | - QT_BASE=57 31 | - compiler: clang 32 | os: osx 33 | env: 34 | - QMAKESPEC=macx-clang 35 | - QT_BASE=57 36 | 37 | before_install: 38 | - if [[ "$QT_BASE" = "48" && "$TRAVIS_OS_NAME" == "linux" ]]; then sudo add-apt-repository --yes ppa:beineri/opt-qt487-trusty; fi 39 | - if [[ "$QT_BASE" = "57" && "$TRAVIS_OS_NAME" == "linux" ]]; then sudo add-apt-repository --yes ppa:beineri/opt-qt571-trusty; fi 40 | - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get update -qq; fi 41 | - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi 42 | 43 | install: 44 | - if [[ "$QT_BASE" = "48" && "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install -qq opt-qt4-qmake opt-qt4-dev-tools; source /opt/qt-4.8/bin/qt-4.8-env.sh; fi 45 | - if [[ "$QT_BASE" = "57" && "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install -qq qt57base; source /opt/qt57/bin/qt57-env.sh; fi 46 | - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install qt5; fi 47 | 48 | script: 49 | - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then qmake -r; fi 50 | - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then /usr/local/opt/qt/bin/qmake -r; fi 51 | - make 52 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011 Morgan Leborgne 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /QProgressIndicator: -------------------------------------------------------------------------------- 1 | #include "QProgressIndicator.h" 2 | -------------------------------------------------------------------------------- /QProgressIndicator.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * The MIT License (MIT) 3 | * 4 | * Copyright (c) 2011 Morgan Leborgne 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | */ 24 | 25 | #include "QProgressIndicator.h" 26 | 27 | #include 28 | 29 | QProgressIndicator::QProgressIndicator(QWidget* parent) 30 | : QWidget(parent) 31 | , m_angle(0) 32 | , m_timerId(-1) 33 | , m_delay(40) 34 | , m_displayedWhenStopped(false) 35 | , m_color(Qt::black) 36 | { 37 | setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); 38 | setFocusPolicy(Qt::NoFocus); 39 | } 40 | 41 | bool 42 | QProgressIndicator::isAnimated() const 43 | { 44 | return (m_timerId != -1); 45 | } 46 | 47 | void 48 | QProgressIndicator::setDisplayedWhenStopped(bool state) 49 | { 50 | m_displayedWhenStopped = state; 51 | 52 | update(); 53 | } 54 | 55 | bool 56 | QProgressIndicator::isDisplayedWhenStopped() const 57 | { 58 | return m_displayedWhenStopped; 59 | } 60 | 61 | void 62 | QProgressIndicator::startAnimation() 63 | { 64 | m_angle = 0; 65 | 66 | if (m_timerId == -1) 67 | m_timerId = startTimer(m_delay); 68 | } 69 | 70 | void 71 | QProgressIndicator::stopAnimation() 72 | { 73 | if (m_timerId != -1) 74 | killTimer(m_timerId); 75 | 76 | m_timerId = -1; 77 | 78 | update(); 79 | } 80 | 81 | void 82 | QProgressIndicator::setAnimationDelay(int delay) 83 | { 84 | if (m_timerId != -1) 85 | killTimer(m_timerId); 86 | 87 | m_delay = delay; 88 | 89 | if (m_timerId != -1) 90 | m_timerId = startTimer(m_delay); 91 | } 92 | 93 | void 94 | QProgressIndicator::setColor(const QColor& color) 95 | { 96 | m_color = color; 97 | 98 | update(); 99 | } 100 | 101 | QSize 102 | QProgressIndicator::sizeHint() const 103 | { 104 | return QSize(20, 20); 105 | } 106 | 107 | int 108 | QProgressIndicator::heightForWidth(int w) const 109 | { 110 | return w; 111 | } 112 | 113 | void 114 | QProgressIndicator::timerEvent(QTimerEvent* /*event*/) 115 | { 116 | m_angle = (m_angle + 30) % 360; 117 | 118 | update(); 119 | } 120 | 121 | void 122 | QProgressIndicator::paintEvent(QPaintEvent* /*event*/) 123 | { 124 | if (!m_displayedWhenStopped && !isAnimated()) 125 | return; 126 | 127 | int width = qMin(this->width(), this->height()); 128 | 129 | QPainter p(this); 130 | p.setRenderHint(QPainter::Antialiasing); 131 | 132 | int outerRadius = (width - 1) * 0.5; 133 | int innerRadius = (width - 1) * 0.5 * 0.38; 134 | 135 | int capsuleHeight = outerRadius - innerRadius; 136 | int capsuleWidth = (width > 32) ? capsuleHeight * .23 : capsuleHeight * .35; 137 | int capsuleRadius = capsuleWidth / 2; 138 | 139 | for (int i = 0; i < 12; i++) { 140 | QColor color = m_color; 141 | color.setAlphaF(1.0f - (i / 12.0f)); 142 | p.setPen(Qt::NoPen); 143 | p.setBrush(color); 144 | p.save(); 145 | p.translate(rect().center()); 146 | p.rotate(m_angle - i * 30.0f); 147 | p.drawRoundedRect(-capsuleWidth * 0.5, -(innerRadius + capsuleHeight), capsuleWidth, 148 | capsuleHeight, capsuleRadius, capsuleRadius); 149 | p.restore(); 150 | } 151 | } 152 | -------------------------------------------------------------------------------- /QProgressIndicator.h: -------------------------------------------------------------------------------- 1 | /* 2 | * The MIT License (MIT) 3 | * 4 | * Copyright (c) 2011 Morgan Leborgne 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | * SOFTWARE. 23 | */ 24 | 25 | #ifndef QPROGRESSINDICATOR_H 26 | #define QPROGRESSINDICATOR_H 27 | 28 | #include 29 | #include 30 | 31 | /*! 32 | \class QProgressIndicator 33 | \brief The QProgressIndicator class lets an application display a progress indicator to show 34 | that a lengthy task is under way. 35 | 36 | Progress indicators are indeterminate and do nothing more than spin to show that the application 37 | is busy. 38 | \sa QProgressBar 39 | */ 40 | class QProgressIndicator : public QWidget 41 | { 42 | Q_OBJECT 43 | Q_PROPERTY(int delay READ animationDelay WRITE setAnimationDelay) 44 | Q_PROPERTY(bool displayedWhenStopped READ isDisplayedWhenStopped WRITE setDisplayedWhenStopped) 45 | Q_PROPERTY(QColor color READ color WRITE setColor) 46 | public: 47 | QProgressIndicator(QWidget* parent = 0); 48 | 49 | /*! Returns the delay between animation steps. 50 | \return The number of milliseconds between animation steps. By default, the animation delay 51 | is set to 40 milliseconds. 52 | \sa setAnimationDelay 53 | */ 54 | int animationDelay() const { return m_delay; } 55 | 56 | /*! Returns a Boolean value indicating whether the component is currently animated. 57 | \return Animation state. 58 | \sa startAnimation stopAnimation 59 | */ 60 | bool isAnimated() const; 61 | 62 | /*! Returns a Boolean value indicating whether the receiver shows itself even when it is not 63 | animating. 64 | \return Return true if the progress indicator shows itself even when it is not animating. By 65 | default, it returns false. 66 | \sa setDisplayedWhenStopped 67 | */ 68 | bool isDisplayedWhenStopped() const; 69 | 70 | /*! Returns the color of the component. 71 | \sa setColor 72 | */ 73 | const QColor& color() const { return m_color; } 74 | 75 | virtual QSize sizeHint() const; 76 | int heightForWidth(int w) const; 77 | public slots: 78 | /*! Starts the spin animation. 79 | \sa stopAnimation isAnimated 80 | */ 81 | void startAnimation(); 82 | 83 | /*! Stops the spin animation. 84 | \sa startAnimation isAnimated 85 | */ 86 | void stopAnimation(); 87 | 88 | /*! Sets the delay between animation steps. 89 | Setting the \a delay to a value larger than 40 slows the animation, while setting the \a 90 | delay to a smaller value speeds it up. 91 | \param delay The delay, in milliseconds. 92 | \sa animationDelay 93 | */ 94 | void setAnimationDelay(int delay); 95 | 96 | /*! Sets whether the component hides itself when it is not animating. 97 | \param state The animation state. Set false to hide the progress indicator when it is not 98 | animating; otherwise true. 99 | \sa isDisplayedWhenStopped 100 | */ 101 | void setDisplayedWhenStopped(bool state); 102 | 103 | /*! Sets the color of the components to the given color. 104 | \sa color 105 | */ 106 | void setColor(const QColor& color); 107 | 108 | protected: 109 | virtual void timerEvent(QTimerEvent* event); 110 | virtual void paintEvent(QPaintEvent* event); 111 | 112 | private: 113 | int m_angle; 114 | int m_timerId; 115 | int m_delay; 116 | bool m_displayedWhenStopped; 117 | QColor m_color; 118 | }; 119 | 120 | #endif // QPROGRESSINDICATOR_H 121 | -------------------------------------------------------------------------------- /QProgressIndicator.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | """ 4 | Author: Jared P. Sutton 5 | License: LGPL 6 | Note: I've licensed this code as LGPL because it was a complete translation of the code found here... 7 | https://github.com/mojocorp/QProgressIndicator 8 | 9 | """ 10 | 11 | import sys 12 | from PySide.QtCore import * 13 | from PySide.QtGui import * 14 | 15 | class QProgressIndicator (QWidget): 16 | m_angle = None 17 | m_timerId = None 18 | m_delay = None 19 | m_displayedWhenStopped = None 20 | m_color = None 21 | 22 | def __init__ (self, parent): 23 | # Call parent class constructor first 24 | super(QProgressIndicator, self).__init__(parent) 25 | 26 | # Initialize Qt Properties 27 | self.setProperties() 28 | 29 | # Intialize instance variables 30 | self.m_angle = 0 31 | self.m_timerId = -1 32 | self.m_delay = 40 33 | self.m_displayedWhenStopped = False 34 | self.m_color = Qt.black 35 | 36 | # Set size and focus policy 37 | self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) 38 | self.setFocusPolicy(Qt.NoFocus) 39 | 40 | # Show the widget 41 | self.show() 42 | 43 | def animationDelay (self): 44 | return self.delay 45 | 46 | def isAnimated (self): 47 | return (self.m_timerId != -1) 48 | 49 | def isDisplayedWhenStopped (self): 50 | return self.displayedWhenStopped 51 | 52 | def getColor (self): 53 | return self.color 54 | 55 | def sizeHint (self): 56 | return QSize(20, 20) 57 | 58 | def startAnimation (self): 59 | self.m_angle = 0 60 | 61 | if self.m_timerId == -1: 62 | self.m_timerId = self.startTimer(self.m_delay) 63 | 64 | def stopAnimation (self): 65 | if self.m_timerId != -1: 66 | self.killTimer(self.m_timerId) 67 | 68 | self.m_timerId = -1 69 | self.update() 70 | 71 | def setAnimationDelay (self, delay): 72 | if self.m_timerId != -1: 73 | self.killTimer(self.m_timerId) 74 | 75 | self.m_delay = delay 76 | 77 | if self.m_timerId != -1: 78 | self.m_timerId = self.startTimer(self.m_delay) 79 | 80 | def setDisplayedWhenStopped (self, state): 81 | self.displayedWhenStopped = state 82 | self.update() 83 | 84 | def setColor (self, color): 85 | self.m_color = color 86 | self.update() 87 | 88 | def timerEvent (self, event): 89 | self.m_angle = (self.m_angle + 30) % 360 90 | self.update() 91 | 92 | def paintEvent (self, event): 93 | if (not self.m_displayedWhenStopped) and (not self.isAnimated()): 94 | return 95 | 96 | width = min(self.width(), self.height()) 97 | 98 | painter = QPainter(self) 99 | painter.setRenderHint(QPainter.Antialiasing) 100 | 101 | outerRadius = (width - 1) * 0.5 102 | innerRadius = (width - 1) * 0.5 * 0.38 103 | 104 | capsuleHeight = outerRadius - innerRadius 105 | capsuleWidth = capsuleHeight *.23 if (width > 32) else capsuleHeight *.35 106 | capsuleRadius = capsuleWidth / 2 107 | 108 | for i in range(0, 12): 109 | color = QColor(self.m_color) 110 | 111 | if self.isAnimated(): 112 | color.setAlphaF(1.0 - (i / 12.0)) 113 | else: 114 | color.setAlphaF(0.2) 115 | 116 | painter.setPen(Qt.NoPen) 117 | painter.setBrush(color) 118 | painter.save() 119 | painter.translate(self.rect().center()) 120 | painter.rotate(self.m_angle - (i * 30.0)) 121 | painter.drawRoundedRect(capsuleWidth * -0.5, (innerRadius + capsuleHeight) * -1, capsuleWidth, capsuleHeight, capsuleRadius, capsuleRadius) 122 | painter.restore() 123 | 124 | def setProperties (self): 125 | self.delay = Property(int, self.animationDelay, self.setAnimationDelay) 126 | self.displayedWhenStopped = Property(bool, self.isDisplayedWhenStopped, self.setDisplayedWhenStopped) 127 | self.color = Property(QColor, self.getColor, self.setColor) 128 | 129 | 130 | def TestProgressIndicator (): 131 | app = QApplication(sys.argv) 132 | progress = QProgressIndicator(None) 133 | progress.setAnimationDelay(70) 134 | progress.startAnimation() 135 | 136 | # Execute the application 137 | sys.exit(app.exec_()) 138 | 139 | if __name__ == "__main__": 140 | TestProgressIndicator() 141 | 142 | 143 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Description 2 | 3 | [![Build Status](https://travis-ci.org/mojocorp/QProgressIndicator.svg?branch=master)](https://travis-ci.org/mojocorp/QProgressIndicator) 4 | 5 | The QProgressIndicator class lets an application display a progress indicator to show that a lengthy task is under way. 6 | Will work at any size. 7 | 8 | 9 | 10 | 11 | ## Dependency 12 | Qt >= 4.4 13 | 14 | ## License 15 | 16 | MIT 17 | -------------------------------------------------------------------------------- /example.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = app 2 | TARGET = example 3 | 4 | QT += core gui 5 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 6 | 7 | DEPENDPATH += . 8 | INCLUDEPATH += . intermediate 9 | 10 | # Input 11 | HEADERS += QProgressIndicator.h 12 | SOURCES += main.cpp QProgressIndicator.cpp 13 | 14 | OBJECTS_DIR = intermediate 15 | MOC_DIR = intermediate 16 | UI_HEADERS_DIR = intermediate 17 | UI_SOURCES_DIR = intermediate 18 | RCC_DIR = intermediate 19 | -------------------------------------------------------------------------------- /main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * The MIT License (MIT) 3 | * 4 | * Copyright (c) 2011 Morgan Leborgne 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | * copies of the Software, and to permit persons to whom the Software is 11 | * furnished to do so, subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in 14 | * all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | * SOFTWARE. 24 | */ 25 | 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | 33 | #include "QProgressIndicator.h" 34 | 35 | int 36 | main(int argc, char** argv) 37 | { 38 | QApplication app(argc, argv); 39 | 40 | QMainWindow* mw = new QMainWindow; 41 | 42 | QProgressIndicator* pi = new QProgressIndicator(); 43 | 44 | QFrame* frame = new QFrame; 45 | 46 | QVBoxLayout* vbl = new QVBoxLayout; 47 | 48 | QPushButton* startPb = new QPushButton("start spin"); 49 | QObject::connect(startPb, SIGNAL(clicked(bool)), pi, SLOT(startAnimation())); 50 | 51 | QPushButton* stopPb = new QPushButton("stop spin"); 52 | QObject::connect(stopPb, SIGNAL(clicked(bool)), pi, SLOT(stopAnimation())); 53 | 54 | QSlider* delaySlider = new QSlider; 55 | delaySlider->setRange(0, 100); 56 | delaySlider->setValue(pi->animationDelay()); 57 | delaySlider->setOrientation(Qt::Horizontal); 58 | QObject::connect(delaySlider, SIGNAL(valueChanged(int)), pi, SLOT(setAnimationDelay(int))); 59 | 60 | vbl->addWidget(startPb); 61 | vbl->addWidget(stopPb); 62 | vbl->addWidget(delaySlider); 63 | 64 | QHBoxLayout* hbl = new QHBoxLayout(frame); 65 | hbl->addWidget(pi); 66 | hbl->addLayout(vbl); 67 | 68 | pi->startAnimation(); 69 | 70 | mw->setCentralWidget(frame); 71 | 72 | mw->show(); 73 | 74 | return app.exec(); 75 | } 76 | -------------------------------------------------------------------------------- /qpm.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.github.mojocorp.qprogressindicator", 3 | "description": "Qt Spinning progress indicator", 4 | "author": { 5 | "name": "mojocorp", 6 | "email": "morganleborgne@gmail.com" 7 | }, 8 | "repository": { 9 | "type": "GITHUB", 10 | "url": "git@github.com:mojocorp/QProgressIndicator.git" 11 | }, 12 | "version": { 13 | "label": "1.0.2", 14 | "revision": "", 15 | "fingerprint": "" 16 | }, 17 | "dependencies": [ 18 | ], 19 | "license": "MIT", 20 | "pri_filename": "qprogressindicator.pri", 21 | "webpage": "https://github.com/mojocorp/QProgressIndicator" 22 | } 23 | -------------------------------------------------------------------------------- /qprogressindicator.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += \ 2 | $$PWD \ 3 | 4 | HEADERS += \ 5 | $$PWD/QProgressIndicator.h \ 6 | 7 | SOURCES += \ 8 | $$PWD/QProgressIndicator.cpp \ 9 | 10 | OTHER_FILES += \ 11 | $$PWD/QProgressIndicator \ 12 | -------------------------------------------------------------------------------- /screen-capture-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mojocorp/QProgressIndicator/79a138c061d0d0477bf0697d2c6e8426cf381a67/screen-capture-1.png -------------------------------------------------------------------------------- /screen-capture-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mojocorp/QProgressIndicator/79a138c061d0d0477bf0697d2c6e8426cf381a67/screen-capture-2.png --------------------------------------------------------------------------------