QT 타이머 QTimer

타이머는 하드웨어 타이머와 비슷한 객체 반복 이벤트를 처리하는 데 사용됩니다. 이러한 MS 1,000, 1,000, MS가 각 송신 타이머가 타임 아웃 () 신호는 슬롯의 대응하는 처리 기능과 연관된 신호가 할 수있는 것 기간의 타이머를 설정하는 것과.

Qt는 수업 시간에 타이머가 QTimer입니다. QTimer는 눈에 보이는 인터페이스 구성 요소는 팔레트 UI 디자이너의에서 찾을 수 없습니다. 도 1 구현하는 타이머 기능의 프로그램, 예를 들면, 타이머가 시간 정지의 길이를 계산하기 시작하고, 타이머 QTime 클래스이다.



도 1 개략 주행 타이머 인스턴스


주요 속성이 QTimer 간격은, 밀리 인터럽트 기간이다. 메인 신호는 타이머 인터럽트에 응답하기 위해, 타이머 인터럽트, 필요성, 신호 슬롯이 타임 아웃 () 함수를 작성하여 송신 신호 QTimer 타임 아웃 ()이다. 다음은 증가 창 클래스 정의는 (다른 관련이없는 정의 생략)이다 :

 
  1. 클래스 대화 : 공공 인 QDialog
  2. {
  3. 은밀한:
  4. QTimer * fTimer; // 타이머
  5. QTime fTimeCounter; // 타이머
  6. 개인 슬롯 :
  7. () on_timer_timeout 무효화 // 타임 아웃 기능을 처리 탱크
  8. };

타이머 fTimeCounter -이 타이머 fTimer을 정의합니다. 또한 슬롯 on_timer_ 기능 제한 () 함수 슬롯에 응답 타임 아웃 () 신호 타이머를 정의한다.

우리는 생성자의 창 클래스의 타이머와 관련된 신호 및 슬롯을 작성해야합니다. 다음과 같이 코드입니다 :

 
  1. 대화 : 대화 (는 QWidget * 부모) : 인 QDialog (부모), UI (새 UI : 대화 상자)
  2. {
  3. UI-> setupUi (이);
  4. fTimer 새로운 QTimer (이) =;
  5. fTimer-> 중지 ();
  6. fTimer->에서는 setInterval (1000); // 설정 한 타이머 시간, 단위 : MS
  7. 연결 (fTimer, SIGNAL (타임 아웃 ())이 슬롯 (on_timer_timeout ()));
  8. }

다음과 같이 코드 on_timer_timeout 슬롯 함수 ()이다 :

 
  1. 무효 대화 :: on_timer_timeout ()
  2. {
  3. // 링 인터럽트 타이머
  4. QTime CURTIME = QTime :: currentTime을 (를); // 현재 시간을 가져옵니다
  5. UI-> LCDHour-> 디스플레이 (curTime.hour ()); // 표시 H
  6. UI-> LCDMin-> 디스플레이 (curTime.minute ()); // 표시 분간
  7. UI-> LCDSec-> 디스플레이 (curTime.second ()); // 번째 디스플레이
  8. VA = INT UI-> progressBar-> 값 ();
  9. ++ 것이다;
  10. 경우 (VA> 100)
  11. A = 0;
  12. UI-> progressBar->의 setValue (VA);
  13. }

이 코드는 먼저 QTime 클래스의 정적 기능 Qtime :: currentTime을 () 현재 시간을 가져온 다음 시간, 분, 초, 시간 QTime 멤버 함수 (), 두 번째 분 (), ()에 인수되었고, 몇 LCDNumber에서 어셈블리는 중요하지 않습니다. ProgressBar의 업데이트주기 값, 인터페이스 변경 타이머가 실행 중임을 만들기 위해있다.

타이머 기간을 설정, 단순히 Qtimer이 :: setlnterval () 함수가 될 수 있습니다 호출합니다.

QTimer :: 시작 () 함수는 타이머를 시작하는 데 사용되는 인터페이스 코드의 "시작"버튼은 다음과 같습니다

 
  1. 무효 대화 :: on_btnStart_clicked ()
  2. {
  3. fTimer-는> () 시작; // 타이머가 작동을 시작합니다
  4. fTimeCounter.start은 (); // 타이머가 작동을 시작합니다
  5. UI-> btnStart->에서 setEnabled (FALSE);
  6. UI-> btnStop->는, setEnabled (TRUE);
  7. UI-> btnSetIntv->에서 setEnabled (FALSE);
  8. }

타이머 fTimeCounter 실행 시작 ()는 시간의 타이머 값으로 현재 시간이다.

QTimer :: 정지 () 함수는 코드가 그대로 다음, 타이머,이 기능을 달성하기 위해 인터페이스의 "정지"버튼을 중지 :

  1. 무효 대화 :: on_btnStop_clicked ()
  2. {
  3. fTimer-> 중지 (); // 타이머 정지
  4. INT는 tmMsec fTimeCounter.elapsed을 () =; // 수 밀리
  5. MS = INT tmMsec의 ~ 1000;
  6. INT 초 = tmMsec / 1000;
  7. QString STR = QString :: asprintf ( "경과 시간 : % d 초, % d 개의 MS", 초, 밀리 초);
  8. UI-> LabElapsTime->의 setText (STR);
  9. UI-> btnStart->는, setEnabled (TRUE);
  10. UI-> btnStop->에서 setEnabled (FALSE);
  11. UI-> btnSetIntv->는, setEnabled (TRUE);
  12. }
게시 21 개 원래 기사 · 원 찬양 2 · 조회수 2,201

추천

출처blog.csdn.net/conimade/article/details/104391115