How to display blinking [animate] red/green status icon in qt
-
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 -
can we have a image that is starts blinking at certain condiation and stops blinking at certain condition
-
@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. -
Only one will work but a small small sample example with help
-
@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
-
how to get PNG image data, 16 x 16, 8-bit/color RGBA, non-interlaced of loader.gif any source will help
-
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 -
#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
-
And you really want to say us that you even tried to compile this piece of whatever?
-
This is just a smaple I have tried to take from my own code base