Created
February 14, 2017 12:20
-
-
Save iamazeem/3059368231037daf19fcc194dc904277 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <QApplication> | |
#include <QDebug> | |
#include <QSystemTrayIcon> | |
#include <QMenu> | |
#include <QAction> | |
#include <QIcon> | |
#include <QThread> | |
#include <QObject> | |
#include <QFile> | |
#include <QIODevice> | |
#include <QMessageBox> | |
#include <cstdlib> | |
class Test : public QThread | |
{ | |
public: | |
explicit Test( const int id ) : _id{ id } | |
{ | |
qDebug() << "Test constructor called! id:" << _id; | |
} | |
virtual ~Test() | |
{ | |
qDebug() << "Test deconstructor called! id:" << _id; | |
} | |
void run() override final | |
{ | |
QFile file { "./test.txt" }; | |
file.open( QIODevice::ReadWrite ); | |
QTextStream stream { &file }; | |
while( !isInterruptionRequested() ) | |
{ | |
qDebug() << "id:" << _id; | |
stream << "id:" << _id << "\n" << flush; | |
QThread::sleep( 1 ); | |
} | |
file.close(); | |
} | |
private: | |
int _id; | |
}; | |
class Test1 | |
{ | |
public: | |
explicit Test1() | |
{ | |
qDebug() << "Test1 constructor called!"; | |
} | |
~Test1() | |
{ | |
qDebug() << "Test1 deconstructor called!"; | |
} | |
}; | |
int main( int argc, char *argv[] ) | |
{ | |
QApplication app( argc, argv ); | |
if ( !QSystemTrayIcon::isSystemTrayAvailable() ) | |
{ | |
qDebug() << "Sytem tray is not availabe!"; | |
return 0; | |
} | |
QSystemTrayIcon icon {}; | |
QMenu menu {}; | |
menu.addSection( QApplication::tr("Main") ); | |
menu.addAction( QApplication::tr("File") ); | |
menu.addAction( QApplication::tr("Edit") ); | |
menu.addSeparator(); | |
menu.addAction( QApplication::tr("Quit"), []() | |
{ | |
qDebug() << "Quitting..."; | |
qApp->quit(); | |
}); | |
icon.setIcon( QIcon("c:/icons/undo.ico") ); | |
icon.setContextMenu( &menu ); | |
icon.show(); | |
icon.showMessage( "Test", "Hello World!", | |
QSystemTrayIcon::Information, 2 ); | |
Test test { 1 }; | |
test.start(); | |
Test1 test1 {}; | |
QObject::connect( &app, &QApplication::aboutToQuit, [&test, &icon]() | |
{ | |
icon.showMessage( "Quit", "Quitting...", | |
QSystemTrayIcon::Information, 1 ); | |
qDebug() << "aboutToQuit"; | |
if ( test.isRunning() ) | |
{ | |
test.requestInterruption(); | |
test.wait(); | |
} | |
}); | |
return app.exec(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment