[SW기초실습1] #Mission 3, Qt를 이용한 stop watch
*stop watch전체 설명
START버튼을 누르면 flag=1이고, 10msec마다 시간이 증가되는 함수를 부르는데 그 때마다 ms++가 되고 그렇게 ms가 100이 되면 1초가 증가한다. [10msec*100=1000(1초)]
STOP버튼을 누르면 변수 flag가 0이 되는데 flag가 0이 되면 시간이 가는 함수가 return 0을 하면서 시간이 정지된다. 시간이 정지되면서 변수 remainingSecTime이 0으로 초기화 되는데 remainingSecTime은 ms=100이되면 증가하는 ‘초‘인데 초기화는 다시 START버튼을 누르면 정지 되었던 시간부터 증가하기 위한 이유이다. RESET버튼을 누르면 변수 flag와 ms, 분(min), 시(hour) 가 0으로 모두 초기화 되고 시간이 처음과 같이 00:00:00.00으로 출력 되어진다.
-code
code |
설명 |
|
변수를 선언, stop은 STOP버튼을 눌렀을 때 시간을 멈추기 위한 변수이고, flag는 시간이 가는timer_handler함수를 제어 하기 위해 사용한 변수이다. |
|
시작부분에 시간을 나타내기 위한 함수이다. |
|
flag가 1일때만 시간이 증가가 된다. 이 함수는 10msec마다 불러오는데 그럴때마다 ms++이 되고 이렇게 ms가 100정도 되면(10*100=1000msec) 1초가 증가된다. remainingTime>0일때는 1을 반환하고 STOP버튼을 누르면 stop이 1이 되는데 그러면 timer_handler함수는 return 0으로 종료하고 시간이 더 이상 가지 않는다. |
|
START버튼을 누르면 flag가 1이 되고 10msec마다 timer_handler함수를 불러온다. 이때 flag가 1이므로 불러온 함수에서 시간이 증가 된다. STOP버튼을 누르면 flag가 0이 되고 함수를 종료하는 변수 stop이 1이 되면서 시간이 정지 된다. remainingSecTime=0을 하는 이유는 정지를 하고 다시 시작을 누르면 정지된 시간부터 증가가 되어야 하므로 사용한다. RESET버튼을 누르면 모든 변수가 초기화가 된다. |
|
시간을 보여주는 label1을 vbox에 먼저 올려놓고 그다음 START버튼, STOP버튼, RESET버튼을 차례대로 vbox에 올려준다. |
|
START,STOP,RESET버튼을 누르면 buttonClicked함수를 부른다.시간 label과 버튼들을 가지고 있는 vbox를 window에 올려준다. |
-결과
|
|
|
시작 |
START를 누르면 시간이 간다. |
STOP을 누르면 시간이 멈춘다. |
|
|
STOP후에 다시 START를 누르면 정지되었던 시간부터 다시 시간이 간다. |
STOP을 누른 후에 RESET을 누르면 모두 초기화 되고 시작부분으로 돌아가게 된다. |