4
4
#include < QMouseEvent>
5
5
#include < QKeyEvent>
6
6
7
+
7
8
#include < QDesktopWidget>
8
9
9
10
@@ -49,10 +50,27 @@ MoneyProgress::MoneyProgress(QWidget *parent)
49
50
int posX = pDeskdop->width () / 2 ;
50
51
int posY = pDeskdop->height () / 2 ;
51
52
53
+
54
+
55
+ // 更新一次数据(默认数据)
56
+ workDown = ui->timeWorkdown ->time ();
57
+ workUp = ui->timeWorkup ->time ();
58
+ sleepDown = ui->timeSleepdown ->time ();
59
+ sleepUp = ui->timeSleepup ->time ();
60
+ money = 300 ;
61
+ days = 24 ;
62
+
63
+
64
+
65
+
66
+
67
+
52
68
iconmessage.setGeometry (posX, posY+140 , 300 , 180 );
69
+ updateM ();
53
70
54
71
55
72
// connect(timer,&QTimer::timeout,this,&MoneyProgress::update);
73
+
56
74
connect (timer2,&QTimer::timeout,&iconmessage,&message::hide);
57
75
58
76
// this->hide()
@@ -68,25 +86,66 @@ void MoneyProgress::onTrayActivated(QSystemTrayIcon::ActivationReason reason){
68
86
case QSystemTrayIcon::Trigger:
69
87
// 单击托盘图标
70
88
qDebug (" click" );
71
-
89
+ updateM ();
72
90
iconmessage.show ();
73
- timer2->start (1500 ); // 每分钟更新一次 后面看看要不要改成可修改的
91
+ timer2->start (2000 ); // 每分钟更新一次 后面看看要不要改成可修改的
74
92
break ;
75
93
case QSystemTrayIcon::DoubleClick:
76
94
// 双击托盘图标
77
95
// 双击后显示主程序窗口
78
96
this ->show ();
79
97
break ;
80
98
default :
99
+ update ();
81
100
break ;
82
101
}
83
102
}
84
103
85
104
void MoneyProgress::update (){
86
105
//
87
106
qDebug (" update" );
107
+ int second = (workUp.secsTo (workDown)-sleepUp.secsTo (sleepDown));
108
+ float hours = second/3600.0 ;
109
+
110
+ float moneyday = money/days;
111
+ float moneysecond = moneyday/second;
112
+ // 判断两个界面是否可见
113
+ if (this ->isVisible () ){
114
+ ui->labelDay ->setText (" 您一月工作" +QString::number (days)+" 天;" );
115
+ ui->labelMoneyDay ->setText (" 您一天能挣" +QString::number (moneyday,' f' ,1 )+" 元;" );
116
+ ui->labelHourDay ->setText (" 您一天工作" +QString::number (hours,' f' ,1 )+" 小时;" );
117
+ ui->labelMoneySecond ->setText (" 您一秒钟能挣" +QString::number (moneysecond,' f' ,6 )+" 元;" );
118
+
119
+ }
120
+ if (iconmessage.isVisible ()){
121
+ int progress = 0 ;
122
+ progress = workUp.secsTo (QTime::currentTime ())*100 /second;
123
+ iconmessage.update (progress,moneyday);
124
+
125
+ }
88
126
89
127
}
128
+ void MoneyProgress::updateM (){
129
+ //
130
+ qDebug (" update" );
131
+ int second = (workUp.secsTo (workDown)-sleepUp.secsTo (sleepDown));
132
+ float hours = second/3600.0 ;
133
+
134
+ float moneyday = money/days;
135
+ float moneysecond = moneyday/second;
136
+ // 判断两个界面是否可见
137
+
138
+ ui->labelDay ->setText (" 您一月工作" +QString::number (days)+" 天;" );
139
+ ui->labelMoneyDay ->setText (" 您一天能挣" +QString::number (moneyday,' f' ,1 )+" 元;" );
140
+ ui->labelHourDay ->setText (" 您一天工作" +QString::number (hours,' f' ,1 )+" 小时;" );
141
+ ui->labelMoneySecond ->setText (" 您一秒钟能挣" +QString::number (moneysecond,' f' ,6 )+" 元;" );
142
+ int progress = 0 ;
143
+ progress = workUp.secsTo (QTime::currentTime ())*100 /second;
144
+ iconmessage.update (progress,moneyday);
145
+ }
146
+
147
+
148
+
90
149
91
150
void MoneyProgress::createMenu ()
92
151
{
@@ -196,7 +255,11 @@ void MoneyProgress::on_Startcalculate_clicked()
196
255
// 启动定时器
197
256
// 计时器 用来更新
198
257
QTimer *timer = new QTimer;
199
- connect (timer,&QTimer::timeout,this ,&MoneyProgress::update);
258
+ // void (MoneyProgress:: *pup)(int) = &MoneyProgress::update;
259
+ // QOverload::of(&QComboBox::currentIndexChanged),[=](int index){ /* … */ })
260
+
261
+
262
+ connect (timer,&QTimer::timeout,this ,qOverload<>(&MoneyProgress::update));
200
263
timer->start (1000 ); // 每分钟更新一次 后面看看要不要改成可修改的
201
264
}
202
265
@@ -210,6 +273,9 @@ void MoneyProgress::on_timeWorkup_userTimeChanged(const QTime &time)
210
273
void MoneyProgress::on_timeWorkdown_userTimeChanged (const QTime &time)
211
274
{
212
275
workDown = time ;
276
+ // 有效工时计算与显示
277
+ qDebug (" 工作时间 %f" ,(workUp.secsTo (workDown)-sleepUp.secsTo (sleepDown))/3600.0 );
278
+ update ();
213
279
}
214
280
215
281
@@ -222,17 +288,22 @@ void MoneyProgress::on_timeSleepup_userTimeChanged(const QTime &time)
222
288
void MoneyProgress::on_timeSleepdown_userTimeChanged (const QTime &time)
223
289
{
224
290
sleepDown = time ;
291
+ update ();
292
+ qDebug (" 午休时间 %f" ,sleepUp.secsTo (sleepDown)/3600.0 );
225
293
}
226
294
227
295
228
296
void MoneyProgress::on_moneyMonth_editingFinished ()
229
297
{
230
298
money = ui->moneyMonth ->text ().toInt ();
299
+ update ();
231
300
}
232
301
233
302
234
303
void MoneyProgress::on_workDay_editingFinished ()
235
304
{
236
305
days = ui->workDay ->text ().toInt ();
306
+ update ();
307
+
237
308
}
238
309
0 commit comments