Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

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

    General and Desktop
    4
    11
    2254
    Loading More Posts
    • 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
      Qt Enthusiast last edited by Qt Enthusiast

      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 Reply Quote 0
      • Q
        Qt Enthusiast last edited by

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

        mrjj 1 Reply Last reply Reply Quote 0
        • mrjj
          mrjj Lifetime Qt Champion @Qt Enthusiast last edited by

          @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 Reply Quote 2
          • Q
            Qt Enthusiast last edited by

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

            VRonin 1 Reply Last reply Reply Quote 0
            • VRonin
              VRonin @Qt Enthusiast last edited by

              @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 Reply Quote 2
              • Q
                Qt Enthusiast last edited by

                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 Reply Quote 0
                • VRonin
                  VRonin last edited by

                  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 Reply Quote 1
                  • Q
                    Qt Enthusiast last edited by

                    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 Reply Quote 0
                    • Q
                      Qt Enthusiast last edited by VRonin

                      #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 Reply Quote 0
                      • Christian Ehrlicher
                        Christian Ehrlicher Lifetime Qt Champion last edited by

                        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 Reply Quote 1
                        • Q
                          Qt Enthusiast last edited by

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

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post