QT4에서 한글 출력이 안 된다는 말씀이 있으셔서, 빨리 확인해 봐야지 했지만 지금껏 여유가 없어서 미루어 왔는데, 오늘 FALINUX에 다녀올 일이 있어서 찾았다가, 때마침 QT를 잘 알고 계시는 박진호 팀장님을 뵙게되어 그 방법을 알게 되었습니다. 항상 강좌 글을 작성할 때에는 항상 제가 직접 입력하고 확인해서, 가급적이면 따라하기 식으로 작성하려 노력했습니다만, 이번 글은 박진호 팀장님께서 설명하신 내용을 그대로 올립니다. 이유는 이미 박진호 팀장님께서 실무에 적용하신 내용이고, 제가 확인하고 올리려면 시간이 걸릴듯 해서요. QT4에서 한글 출력에 어려움을 가지고 계시는 분은 참고하세요.

폰트 설치 및 사용 준비

박진호팀장님께서는 QT에서 QPF가 아닌 TTF를 사용하고 계셨습니다. 이점 유의하시고요, 우선 폰트를 QT4 라이브러리 디렉토리에 있는 fonts 디렉토리에 저장합니다. 즉, /usr/local/qt에 QT4가 설치되어 있다면 /usr/local/qt/lib/fonts/ 디렉토리에 ttf 를 복사합니다.

-rwxr-xr-x 1 root root 4337480 Mar 11 2008 falinux.ttf

여기서 끝이 아니라 하나 더, /usr/local/qt/lib/fonts/ 디렉토리 안에 fontdir 이라는 텍스트 파일이 있습니다. 이 파일 안에 폰트에 대한 정보를 등록합니다.

]# vi fonts

falinux falinux.ttf FT y 50 0 sa               <-- 폰트 정보를 추가하고 저장합니다.

이로써 폰트를 사용할 준비가 완료되었습니다.

프로그램에서 한글 사용

프로그램에서 한글 폰트를 사용하기 위해 폰트 변수를 선언합니다.

QFont                   *myfont;

그리고 main()에서 준비한 폰트를 사용하기 위해 QFont를 생성합니다.

int main(int argc, char** argv)
{
    MyQApplication app(argc, argv);
 
                     :
                     
    // 폰트관련 설정을 한다.
    QFont myfont("falinux");
    QApplication::setFont(myfont);
    
                     :

}

이제 생성한 QFont를 이용하여 한글을 출력할 수 있습니다.

void frmTest::set_button_label( int b_num, char *str )
{
    QString label;

    label = QApplication::translate( NULL, str, 0, QApplication::UnicodeUTF8);

    ui.btn_B0->setText( label );

}

인수로 받은 문자열 char *str을 QApplication::translate()를 호출하여 Unicode UTF8로 변환한 것에 유의하십시오.

자~ 여기까지인데요, QT4에서 한글 출력에 성공하시기 바랍니다. 아울러 바쁘신 중에도 귀한 시간을 내 주시고 자세히 설명해 주신 FALINUX박진호 팀장님께 감사드립니다. ^^