▶ 프로그램 작성

qt 에서의 main() 함수는 생성한 위젯 중에 어느 것을 메인으로 할지를 결정하고, 프로그램을 실행해 주는 역활을 합니다. 참고로 저 개인적인 견해입니다만, main() 함수는 부피를 크게하지 않는 것이 좋습니다.

main() 함수는

  1. 위젯을 생성하고,
  2. 메인위젯을 지정한다.
  3. 프로그램을 실행한다.

▶ 프로그램 소스, main.cpp

#include <qapplication.h>
#include <qwidget.h>
#include <qstring.h>

#define kor(str) QString::fromLocal8Bit(str)

class TClass:public QWidget
{
public:
  TClass();
};

TClass::TClass()
{
  setCaption( kor( "안녕!!"));
  resize( 150, 100);
}

int main(int argc, char **argv)
{
  QApplication app( argc, argv);
  TClass obj;
  app.setMainWidget(&obj);
  obj.show();

  return app.exec();
}

 

한글 출력

프로그램은 보통 vi 에서 작성하는데 vi 의 한글 코드는 KSC5601 이지만 qt 는 유니코드를 사용합니다. 이런 이유로 한글을 바로 출력하면 qt 에서는 깨져서 출력이됩니다.

한글을 출력하기 위해서는 3가지 방법이 있습니다.

  1. 매크로를 이용하는 방법

    #include <qstring.h>

    #define kor(str) QString::fromLocal8Bit(str)

    QString str = "안녕하세요!!";
    setCaption( toUniString( str));

  2. 코덱을 이용하는 방법

    #include <qstring.h>
    #include <qtextcodec.h>

    QString toUniString(QString str)
    {
      QTextCodec * codec = QTextCodec::codecForName("eucKR");
      QString localeStr = codec->toUnicode(str);

      return localeStr;
    }

    QString str = "Hello Word!! 안녕하세요!!";
    setCaption( toUniString( str));

  3. QEucKrCodec 객체 사용
    이 객체를 처음 보았을 때에는 야~ 우리나라 언어를 위한 코덱이 다있네하고 놀랬습니다. 모든 함수를 확인은 못했지만 일본어 코덱도 있더군요.

    #include <qstring.h>
    #include <qeuckrcodec.h>

    QEucKrCodec* codec = new QEucKrCodec();
    char* string="안녕하세요!!";
    QString str = codec->toUnicode(string, strlen(string));
    setCaption( str);

 

태그: *QT *그래픽