주기적으로 무엇을 확인하거나 실행해야 한다면 타이머만큼 좋은 것이 없죠. 혹시나하고 위젯의 목록을 뒤져 보았지만 없네요. 그러나 다행히 QTimer Class가 있었습니다. 이번에는 QTimer를 사용해 보겠습니다.

예제는 카운터 변수, nCounter 를 두고 타이머로 일정 시간 마다 nCounter를 증가 시키면서 값을 출력하는 프로그램을 작성해 보도록 하겠습니다.

QTimer 사용

  1. 프로제트 파일 생성, "C++ Project"를 선택합니다.


  2. 적당한 프로젝트 이름을 입력합니다.


  3. 프로젝트 파일을 저장합니다.


  4. 폼 이름을 지정합니다. 이 이름이 클래스 이름이 되므로 적당한 이름을 지정해 줍니다. 여기서는 frmMain으로 입력하겠습니다.


  5. 카운터를 출력하기 위해 라벨 하나를 배치했습니다.


  6. QTimer를 사용하기 위해서 QTimer를 선언해야 하며, 폼에 배치하듯 추가해야 합니다. 그러므로 Object Explorer >> Member>> Class Variables 에서 QTimer timer과 타이머가 발생할 때마다 카운트해야되는 변수 int nCounter를 추가합니다.



  7. 그러나 frmMain은 QTimer가 뭔지 모릅니다. QTimer가 있는 qtimer.h를 포함해야 합니다.
    Includes(in Declaration)에 qtimer.h를 등록합니다.


  8. 폼이 생성되면 타이머를 생성해야 겠습니다. 또한 타이머에서 사용한 카운터 변수 nCounter도 0으로 초기화해야 하구요.

    이를 위해서 폼이 생성되면 자동으로 호출해 주는 init()함수를 생성합니다.



  9. init() 함수 이름을 클릭하면 에디터가 출력되는데 아래와 같이 코드를 입력합니다.
void frmMain::init()
{
   nCounter   = 0;
   timer      = new QTimer(this);

   connect(timer, SIGNAL(timeout()),this, SLOT(onTimer()));

   timer->start(500, false);
}
  1. 이제 타이머를 위한 슬롯을 만들어야 겠습니다. Slots 항목에 onTimer를 생성합니다.


  2. 그리고 onTimer()에 대한 코드를 입력합니다.
void frmMain::onTimer()
{
   labCounter->setNum( nCounter++);
}
  1. File 메뉴 >> New를 선택하고 C++ Main File을 선택합니다.



  2. 메인 폼을 선택 윈도우에서 frmMain을 선택합니다.

  3. 이제 모든 파일을 저장한 후 빌드하면 됩니다.
]$ qmake
]$ make

프로그램을 실행하면 카운터가 증가하면서 라벨에 증가되는 카운터의 값이 출력됩니다.

 

태그: *QT *그래픽