raminlich
پنج شنبه 13 شهریور 1393, 00:41 صبح
سلام
این برنامه
#include "mainwindow.h"
#include <QApplication>
#include <QSystemTrayIcon>
#include <QMenu>
#include <QAction>
#include <QFileDialog>
#include <QMessageBox>
#include <thread>
#include <fstream>
#include <QTextStream>
#include <time.h>
#include <windows.h>
using namespace std;
const tm* timeinfos;
void tray();
void refresh();
void starts();
void wait();
ofstream dif("d:\\dif.txt");
const char* const path = "d:\\dif.txt" ;
void starts();
int hour=0,minu=0;
ofstream times("d:\\time.txt");
struct tm * timeinfo;
time_t rawtime = time(0) ;
int sec,secd;
MainWindow w;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
w.hide();
std::thread first(tray);
std::thread second(starts);
std::thread third(refresh);
starts();
first.join();
third.join();
return a.exec();
}
void tray(){
QSystemTrayIcon *trayIcon=new QSystemTrayIcon();
QMenu *menu=new QMenu("TimeUsage");
menu->addAction("Open");
menu->addAction("Exit");
trayIcon->setContextMenu(menu);
trayIcon->setIcon(QIcon("e:\\icon.png"));
trayIcon->show();
trayIcon->showMessage("TimeUsage","TimeUsage Is Here!");
QObject::connect(menu,&QMenu::triggered,[&w](QAction* act){
const auto& text = act->text();
if(text=="Exit"){
QApplication::exit();
}
else if(text=="Open"){
w.show();
}
});
}
void refresh(){
for(;;){
wait();
time_t now = time(0) ;
ifstream dif(path);
time_t earlier = 0 ;
dif >> earlier ;
double secs = difftime( now, earlier );
minu=secs/60;
while(minu>60){
minu-=60;
hour++;
}
QFile times("d:\\time.txt");
times.open(QIODevice::Append);
QTextStream stream(×);
stream<<asctime(timeinfos)<<endl<<hour<<"/"<<minu<<endl;
}
}
void starts(){
timeinfos = localtime ( &rawtime );
ofstream dif(path);
dif << rawtime << '\n' ;
dif.close();
refresh();
}
void wait(){
int i;
for (i=0; i<=10; ++i) {
this_thread::sleep_for (chrono::seconds(1));
}
}
کامپایل میشه ولی این ارور میاد ولی موقع اجرا این می یاد:عصبانی++:
123064
این برنامه
#include "mainwindow.h"
#include <QApplication>
#include <QSystemTrayIcon>
#include <QMenu>
#include <QAction>
#include <QFileDialog>
#include <QMessageBox>
#include <thread>
#include <fstream>
#include <QTextStream>
#include <time.h>
#include <windows.h>
using namespace std;
const tm* timeinfos;
void tray();
void refresh();
void starts();
void wait();
ofstream dif("d:\\dif.txt");
const char* const path = "d:\\dif.txt" ;
void starts();
int hour=0,minu=0;
ofstream times("d:\\time.txt");
struct tm * timeinfo;
time_t rawtime = time(0) ;
int sec,secd;
MainWindow w;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
w.hide();
std::thread first(tray);
std::thread second(starts);
std::thread third(refresh);
starts();
first.join();
third.join();
return a.exec();
}
void tray(){
QSystemTrayIcon *trayIcon=new QSystemTrayIcon();
QMenu *menu=new QMenu("TimeUsage");
menu->addAction("Open");
menu->addAction("Exit");
trayIcon->setContextMenu(menu);
trayIcon->setIcon(QIcon("e:\\icon.png"));
trayIcon->show();
trayIcon->showMessage("TimeUsage","TimeUsage Is Here!");
QObject::connect(menu,&QMenu::triggered,[&w](QAction* act){
const auto& text = act->text();
if(text=="Exit"){
QApplication::exit();
}
else if(text=="Open"){
w.show();
}
});
}
void refresh(){
for(;;){
wait();
time_t now = time(0) ;
ifstream dif(path);
time_t earlier = 0 ;
dif >> earlier ;
double secs = difftime( now, earlier );
minu=secs/60;
while(minu>60){
minu-=60;
hour++;
}
QFile times("d:\\time.txt");
times.open(QIODevice::Append);
QTextStream stream(×);
stream<<asctime(timeinfos)<<endl<<hour<<"/"<<minu<<endl;
}
}
void starts(){
timeinfos = localtime ( &rawtime );
ofstream dif(path);
dif << rawtime << '\n' ;
dif.close();
refresh();
}
void wait(){
int i;
for (i=0; i<=10; ++i) {
this_thread::sleep_for (chrono::seconds(1));
}
}
کامپایل میشه ولی این ارور میاد ولی موقع اجرا این می یاد:عصبانی++:
123064