Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to display blinking [animate] red/green status icon in qt
QtWS25 Last Chance

How to display blinking [animate] red/green status icon in qt

Scheduled Pinned Locked Moved Unsolved General and Desktop
11 Posts 4 Posters 3.3k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Q Offline
    Q Offline
    Qt Enthusiast
    wrote on last edited by Qt Enthusiast
    #1

    I have a scenario where some processing is happening in GUI , when the processing the flag is on and otherwise is flag is off

    if (flag)
    Show the rotating image like this ![0_1538288635109_rotating.PNG]
    (https://ddgobkiprc33d.cloudfront.net/d968e3c5-1c70-4e8d-b5dd-89a31f9887fc.PNG)

    else
    show a red color circle in status bar

    1 Reply Last reply
    0
    • Q Offline
      Q Offline
      Qt Enthusiast
      wrote on last edited by
      #2

      can we have a image that is starts blinking at certain condiation and stops blinking at certain condition

      mrjjM 1 Reply Last reply
      0
      • Q Qt Enthusiast

        can we have a image that is starts blinking at certain condiation and stops blinking at certain condition

        mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by
        #3

        @Qt-Enthusiast
        Hi
        Yes, if you use QMovie with QLabel and a animated gif, you
        can stop the animation and resume to make it blink.
        However, if u need BOTH rotating and blinking, it will be hard
        to find gif.

        1 Reply Last reply
        2
        • Q Offline
          Q Offline
          Qt Enthusiast
          wrote on last edited by
          #4

          Only one will work but a small small sample example with help

          VRoninV 1 Reply Last reply
          0
          • Q Qt Enthusiast

            Only one will work but a small small sample example with help

            VRoninV Offline
            VRoninV Offline
            VRonin
            wrote on last edited by
            #5

            @Qt-Enthusiast said in How to display blinking [animate] red/green status icon in qt:

            small small sample example with help

            Did you look at the docs? http://doc.qt.io/qt-5/qmovie.html#details has a minimal example of how to set a gif in a QLabel

            "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
            ~Napoleon Bonaparte

            On a crusade to banish setIndexWidget() from the holy land of Qt

            1 Reply Last reply
            2
            • Q Offline
              Q Offline
              Qt Enthusiast
              wrote on last edited by
              #6

              how to get PNG image data, 16 x 16, 8-bit/color RGBA, non-interlaced of loader.gif any source will help

              1 Reply Last reply
              0
              • VRoninV Offline
                VRoninV Offline
                VRonin
                wrote on last edited by
                #7

                PNG is not animated...

                "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                ~Napoleon Bonaparte

                On a crusade to banish setIndexWidget() from the holy land of Qt

                1 Reply Last reply
                1
                • Q Offline
                  Q Offline
                  Qt Enthusiast
                  wrote on last edited by
                  #8

                  I looked at the code of QMovie how to show bliking cursor in status bar is still not clear to me
                  if you can code for me that will be helpful

                  1 Reply Last reply
                  0
                  • Q Offline
                    Q Offline
                    Qt Enthusiast
                    wrote on last edited by VRonin
                    #9
                    #include <QtGui>
                    
                    #include "mainwindow.h"
                    //! [0]
                    
                    //! [1]
                    //
                    //
                    //
                    //
                    //
                    
                    class blinkCursor : public QLabel
                    {
                        Q_OBJECT
                    public:
                        explicit blinkCursor(QWidget *parent = 0); 
                       ~blinkCursor();    
                    signals: 
                        
                    public slots: 
                        void startProgress();
                        void stopOnOk();
                        void stopOnError();
                        void startTimer(int interval);
                    
                    private:
                       QMovie* movie;
                        QTimer *timer;
                    };
                    
                    blinkCursor::blinkCursor(QWidget *parent) :
                        QLabel(parent)
                    {
                         movie  = new QMovie("/home/rlalwani/loader.gif");
                         setStyleSheet("QLabel { background-color : green; color : blue; }");
                          setMinimumWidth(80);
                    
                    }  
                    blinkCursor::~blinkCursor()
                    {
                    } 
                    
                    void blinkCursor::startProgress()
                    {
                    
                        this->setMovie(movie); 
                        show();
                        movie->start();
                       return;
                    }
                    
                    void blinkCursor::stopOnOk()
                    {
                        movie->stop();
                        return;
                    }
                    
                    void blinkCursor::stopOnError()
                    {
                       }
                    
                    void blinkCursor::startTimer(int interval)
                    {
                    }
                    
                     
                    
                    MainWindow::MainWindow()
                    //! [1] //! [2]
                    {
                        textEdit = new QPlainTextEdit;
                        setCentralWidget(textEdit);
                    
                        createActions();
                        createMenus();
                        createToolBars();
                        createStatusBar();
                    
                        readSettings();
                    
                        connect(textEdit->document(), SIGNAL(contentsChanged()),
                                this, SLOT(documentWasModified()));
                    
                        setCurrentFile("");
                        setUnifiedTitleAndToolBarOnMac(true);
                        blinkCursor* bC = new blinkCursor;
                        statusBar()->addPermanetWidget(blinkCursor);
                    }
                    //! [2]
                    
                    //! [3]
                    void MainWindow::closeEvent(QCloseEvent *event)
                    //! [3] //! [4]
                    {
                        if (maybeSave()) {
                            writeSettings();
                            event->accept();
                        } else {
                            event->ignore();
                        }
                    }
                    //! [4]
                    
                    //! [5]
                    void MainWindow::newFile()
                    //! [5] //! [6]
                    {
                        if (maybeSave()) {
                            textEdit->clear();
                            setCurrentFile("");
                        }
                    }
                    //! [6]
                    
                    //! [7]
                    void MainWindow::open()
                    //! [7] //! [8]
                    {
                        if (maybeSave()) {
                            QString fileName = QFileDialog::getOpenFileName(this);
                            if (!fileName.isEmpty())
                                loadFile(fileName);
                        }
                    }
                    //! [8]
                    
                    //! [9]
                    bool MainWindow::save()
                    //! [9] //! [10]
                    {
                        if (curFile.isEmpty()) {
                            return saveAs();
                        } else {
                            return saveFile(curFile);
                        }
                    }
                    //! [10]
                    
                    //! [11]
                    bool MainWindow::saveAs()
                    //! [11] //! [12]
                    {
                        QString fileName = QFileDialog::getSaveFileName(this);
                        if (fileName.isEmpty())
                            return false;
                    
                        return saveFile(fileName);
                    }
                    //! [12]
                    
                    //! [13]
                    void MainWindow::about()
                    //! [13] //! [14]
                    {
                       QMessageBox::about(this, tr("About Application"),
                                tr("The <b>Application</b> example demonstrates how to "
                                   "write modern GUI applications using Qt, with a menu bar, "
                                   "toolbars, and a status bar."));
                    }
                    //! [14]
                    
                    //! [15]
                    void MainWindow::documentWasModified()
                    //! [15] //! [16]
                    {
                        setWindowModified(textEdit->document()->isModified());
                    }
                    //! [16]
                    
                    //! [17]
                    void MainWindow::createActions()
                    //! [17] //! [18]
                    {
                        newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this);
                        newAct->setShortcuts(QKeySequence::New);
                        newAct->setStatusTip(tr("Create a new file"));
                        connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
                    
                    //! [19]
                        openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this);
                        openAct->setShortcuts(QKeySequence::Open);
                        openAct->setStatusTip(tr("Open an existing file"));
                        connect(openAct, SIGNAL(triggered()), this, SLOT(open()));
                    //! [18] //! [19]
                    
                        saveAct = new QAction(QIcon(":/images/save.png"), tr("&Save"), this);
                        saveAct->setShortcuts(QKeySequence::Save);
                        saveAct->setStatusTip(tr("Save the document to disk"));
                        connect(saveAct, SIGNAL(triggered()), this, SLOT(save()));
                    
                        saveAsAct = new QAction(tr("Save &As..."), this);
                        saveAsAct->setShortcuts(QKeySequence::SaveAs);
                        saveAsAct->setStatusTip(tr("Save the document under a new name"));
                        connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs()));
                    
                    //! [20]
                        exitAct = new QAction(tr("E&xit"), this);
                        exitAct->setShortcuts(QKeySequence::Quit);
                    //! [20]
                        exitAct->setStatusTip(tr("Exit the application"));
                        connect(exitAct, SIGNAL(triggered()), this, SLOT(close()));
                    
                    //! [21]
                        cutAct = new QAction(QIcon(":/images/cut.png"), tr("Cu&t"), this);
                    //! [21]
                        cutAct->setShortcuts(QKeySequence::Cut);
                        cutAct->setStatusTip(tr("Cut the current selection's contents to the "
                                                "clipboard"));
                        connect(cutAct, SIGNAL(triggered()), textEdit, SLOT(cut()));
                    
                        copyAct = new QAction(QIcon(":/images/copy.png"), tr("&Copy"), this);
                        copyAct->setShortcuts(QKeySequence::Copy);
                        copyAct->setStatusTip(tr("Copy the current selection's contents to the "
                                                 "clipboard"));
                        connect(copyAct, SIGNAL(triggered()), textEdit, SLOT(copy()));
                    
                        pasteAct = new QAction(QIcon(":/images/paste.png"), tr("&Paste"), this);
                        pasteAct->setShortcuts(QKeySequence::Paste);
                        pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current "
                                                  "selection"));
                        connect(pasteAct, SIGNAL(triggered()), textEdit, SLOT(paste()));
                    
                        aboutAct = new QAction(tr("&About"), this);
                        aboutAct->setStatusTip(tr("Show the application's About box"));
                        connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));
                    
                    //! [22]
                        aboutQtAct = new QAction(tr("About &Qt"), this);
                        aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));
                        connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
                    //! [22]
                    
                    //! [23]
                        cutAct->setEnabled(false);
                    //! [23] //! [24]
                        copyAct->setEnabled(false);
                        connect(textEdit, SIGNAL(copyAvailable(bool)),
                                cutAct, SLOT(setEnabled(bool)));
                        connect(textEdit, SIGNAL(copyAvailable(bool)),
                                copyAct, SLOT(setEnabled(bool)));
                    }
                    //! [24]
                    
                    //! [25] //! [26]
                    void MainWindow::createMenus()
                    //! [25] //! [27]
                    {
                        fileMenu = menuBar()->addMenu(tr("&File"));
                        fileMenu->addAction(newAct);
                    //! [28]
                        fileMenu->addAction(openAct);
                    //! [28]
                        fileMenu->addAction(saveAct);
                    //! [26]
                        fileMenu->addAction(saveAsAct);
                        fileMenu->addSeparator();
                        fileMenu->addAction(exitAct);
                    
                        editMenu = menuBar()->addMenu(tr("&Edit"));
                        editMenu->addAction(cutAct);
                        editMenu->addAction(copyAct);
                        editMenu->addAction(pasteAct);
                    
                        menuBar()->addSeparator();
                    
                        helpMenu = menuBar()->addMenu(tr("&Help"));
                        helpMenu->addAction(aboutAct);
                        helpMenu->addAction(aboutQtAct);
                    }
                    //! [27]
                    
                    //! [29] //! [30]
                    void MainWindow::createToolBars()
                    {
                        fileToolBar = addToolBar(tr("File"));
                        fileToolBar->addAction(newAct);
                    //! [29] //! [31]
                        fileToolBar->addAction(openAct);
                    //! [31]
                        fileToolBar->addAction(saveAct);
                    
                        editToolBar = addToolBar(tr("Edit"));
                        editToolBar->addAction(cutAct);
                        editToolBar->addAction(copyAct);
                        editToolBar->addAction(pasteAct);
                    }
                    //! [30]
                    
                    //! [32]
                    void MainWindow::createStatusBar()
                    //! [32] //! [33]
                    {
                        statusBar()->showMessage(tr("Ready"));
                    }
                    //! [33]
                    
                    //! [34] //! [35]
                    void MainWindow::readSettings()
                    //! [34] //! [36]
                    {
                        QSettings settings("Trolltech", "Application Example");
                        QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
                        QSize size = settings.value("size", QSize(400, 400)).toSize();
                        resize(size);
                        move(pos);
                    }
                    //! [35] //! [36]
                    
                    //! [37] //! [38]
                    void MainWindow::writeSettings()
                    //! [37] //! [39]
                    {
                        QSettings settings("Trolltech", "Application Example");
                        settings.setValue("pos", pos());
                        settings.setValue("size", size());
                    }
                    //! [38] //! [39]
                    
                    //! [40]
                    bool MainWindow::maybeSave()
                    //! [40] //! [41]
                    {
                        if (textEdit->document()->isModified()) {
                            QMessageBox::StandardButton ret;
                            ret = QMessageBox::warning(this, tr("Application"),
                                         tr("The document has been modified.\n"
                                            "Do you want to save your changes?"),
                                         QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
                            if (ret == QMessageBox::Save)
                                return save();
                            else if (ret == QMessageBox::Cancel)
                                return false;
                        }
                        return true;
                    }
                    //! [41]
                    
                    //! [42]
                    void MainWindow::loadFile(const QString &fileName)
                    //! [42] //! [43]
                    {
                        QFile file(fileName);
                        if (!file.open(QFile::ReadOnly | QFile::Text)) {
                            QMessageBox::warning(this, tr("Application"),
                                                 tr("Cannot read file %1:\n%2.")
                                                 .arg(fileName)
                                                 .arg(file.errorString()));
                            return;
                        }
                    
                        QTextStream in(&file);
                    #ifndef QT_NO_CURSOR
                        QApplication::setOverrideCursor(Qt::WaitCursor);
                    #endif
                        textEdit->setPlainText(in.readAll());
                    #ifndef QT_NO_CURSOR
                        QApplication::restoreOverrideCursor();
                    #endif
                    
                        setCurrentFile(fileName);
                        statusBar()->showMessage(tr("File loaded"), 2000);
                    }
                    //! [43]
                    
                    //! [44]
                    bool MainWindow::saveFile(const QString &fileName)
                    //! [44] //! [45]
                    {
                        QFile file(fileName);
                        if (!file.open(QFile::WriteOnly | QFile::Text)) {
                            QMessageBox::warning(this, tr("Application"),
                                                 tr("Cannot write file %1:\n%2.")
                                                 .arg(fileName)
                                                 .arg(file.errorString()));
                            return false;
                        }
                    
                        QTextStream out(&file);
                    #ifndef QT_NO_CURSOR
                        QApplication::setOverrideCursor(Qt::WaitCursor);
                    #endif
                        out << textEdit->toPlainText();
                    #ifndef QT_NO_CURSOR
                        QApplication::restoreOverrideCursor();
                    #endif
                    
                        setCurrentFile(fileName);
                        statusBar()->showMessage(tr("File saved"), 2000);
                        return true;
                    }
                    //! [45]
                    
                    //! [46]
                    void MainWindow::setCurrentFile(const QString &fileName)
                    //! [46] //! [47]
                    {
                        curFile = fileName;
                        textEdit->document()->setModified(false);
                        setWindowModified(false);
                    
                        QString shownName = curFile;
                        if (curFile.isEmpty())
                            shownName = "untitled.txt";
                        setWindowFilePath(shownName);
                    }
                    //! [47]
                    
                    //! [48]
                    QString MainWindow::strippedName(const QString &fullFileName)
                    //! [48] //! [49]
                    {
                        return QFileInfo(fullFileName).fileName();
                    }
                    //! [49]
                    

                    Complied code

                    1 Reply Last reply
                    0
                    • Christian EhrlicherC Offline
                      Christian EhrlicherC Offline
                      Christian Ehrlicher
                      Lifetime Qt Champion
                      wrote on last edited by
                      #10

                      And you really want to say us that you even tried to compile this piece of whatever?

                      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                      Visit the Qt Academy at https://academy.qt.io/catalog

                      1 Reply Last reply
                      1
                      • Q Offline
                        Q Offline
                        Qt Enthusiast
                        wrote on last edited by
                        #11

                        This is just a smaple I have tried to take from my own code base

                        1 Reply Last reply
                        0

                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved