그래픽 & 멀티미디어
글 수 111
2007.09.07 21:42:03 (*.236.25.26)
30730
주기적으로 무엇을 확인하거나 실행해야 한다면 타이머만큼 좋은 것이 없죠. 혹시나하고 위젯의 목록을 뒤져 보았지만 없네요. 그러나 다행히 QTimer Class가 있었습니다. 이번에는 QTimer를 사용해 보겠습니다.
예제는 카운터 변수, nCounter 를 두고 타이머로 일정 시간 마다 nCounter를 증가 시키면서 값을 출력하는 프로그램을 작성해 보도록 하겠습니다.
QTimer 사용
- 프로제트 파일 생성, "C++ Project"를 선택합니다.
- 적당한 프로젝트 이름을 입력합니다.
- 프로젝트 파일을 저장합니다.
- 폼 이름을 지정합니다. 이 이름이 클래스 이름이 되므로 적당한 이름을 지정해 줍니다. 여기서는 frmMain으로 입력하겠습니다.
- 카운터를 출력하기 위해 라벨 하나를 배치했습니다.
- QTimer를 사용하기 위해서 QTimer를 선언해야 하며, 폼에 배치하듯 추가해야 합니다. 그러므로 Object Explorer >> Member>> Class Variables 에서 QTimer timer과 타이머가 발생할 때마다 카운트해야되는 변수 int nCounter를 추가합니다.
- 그러나 frmMain은 QTimer가 뭔지 모릅니다. QTimer가 있는 qtimer.h를 포함해야 합니다.
Includes(in Declaration)에 qtimer.h를 등록합니다.
- 폼이 생성되면 타이머를 생성해야 겠습니다. 또한 타이머에서 사용한 카운터 변수 nCounter도 0으로 초기화해야 하구요.
이를 위해서 폼이 생성되면 자동으로 호출해 주는 init()함수를 생성합니다.
- init() 함수 이름을 클릭하면 에디터가 출력되는데 아래와 같이 코드를 입력합니다.
void frmMain::init() { nCounter = 0; timer = new QTimer(this); connect(timer, SIGNAL(timeout()),this, SLOT(onTimer())); timer->start(500, false); }
- 이제 타이머를 위한 슬롯을 만들어야 겠습니다. Slots 항목에 onTimer를 생성합니다.
- 그리고 onTimer()에 대한 코드를 입력합니다.
void frmMain::onTimer() { labCounter->setNum( nCounter++); }
- File 메뉴 >> New를 선택하고 C++ Main File을 선택합니다.
- 메인 폼을 선택 윈도우에서 frmMain을 선택합니다.
- 이제 모든 파일을 저장한 후 빌드하면 됩니다.
]$ qmake ]$ make
프로그램을 실행하면 카운터가 증가하면서 라벨에 증가되는 카운터의 값이 출력됩니다.
태그: *QT *그래픽