It won't hurt to try

[C++/윈도우프로그래밍응용]33. 국제화 본문

C++/윈도우프로그래밍응용

[C++/윈도우프로그래밍응용]33. 국제화

yongki.doki 2021. 11. 28. 02:23

Qt의 정보 표시 위젯

1. 정보 표시 관련 위젯

사용자에게 정보 표시를 위해서 사용

문자열이나 숫자, 그림 또는 진행 상태 등의 정보를 표시

  • Qt에서는 QLabel, QLCDNumber, QProgressBar, QTextBrowser 위젯 등을 제공
  • QLabel과 QLCDNumber 위젯 : QFrame 클래스를 상속
  • QProgressBar 위젯 : QWidget 클래스를 상속
  • QTextBrowser 위젯 : QTextEdit 클래스를 상속

2. QLabel 위젯

레이블(Label) 형태로 사용자에게 정보를 표시할 때 사용

문자열(String)뿐만 아니라 픽스맵(Pixmap), 그림(Picture), 영화(Movie)의 여러 형식의 정보들을 표시

  • setText() 메소드 : QString 데이터 형의 문자열(unicode기반)
  • setPixmap() 메소드 : QPixmap 클래스의 이미지(bmp, jpg, png, ...)
  • setPicture() 메소드 : QPicture의 QPainter의 명령 리스트(윈도우에 그림을 그릴때)
  • setMovie() 메소드 : QMovie 클래스의 움직이는 이미지(gif, ...)

3. QLCDNumber 위젯

LCD 형태로 숫자와 관련된 문자를 표시

10진수/16진수 숫자와 다양한 기호 지원

2진수, 10진수, 8진수, 16진수 모드로 숫자 표시

  • 모드를 변환하면 자동으로 값을 변환
  • setMode(Mode) 메소드 / setBinMode() / setDecMode() / setHexMode() / setOctMode() 메소드
  • enum Mode { Hex, Dec, Oct, Bin }

main.cpp를 수정

출력 모드를 2진수, 8진수, 10진수, 16진수로 변경해보세요.

10진수

#include <QApplication>
#include <QLCDNumber>

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  
  QLCDNumber *lcd = new QLCDNumber();
  lcd->setDecMode();
  lcd->setSegmentStyle(QLCDNumber::Flat);
  lcd->display(2002);
  lcd->show();
  
  return a.exec();
}

결과창

2진수

결과창

4. QProgressBar 위젯

전체 단계를 정의해서 단계별로 진행 사항을 표시

바 형태로 현재의 진행 결과처럼 숫자의 값을 도식화하여 보여줄 때 사용

  • 기본 범위 : 0~100
  • 전체 단계 설정 : QProgressBar::setRange() 메소드
  • 현재의 값 설정 : QProgressBar::setValue() 메소드

수직이나 수평의 방향 설정 가능

  • QProgressBar::setOrientation() 메소드

다양한 스타일 제공

main.cpp를 수정

#include <QApplication>
#include <QProgressBar>

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  
  QProgressBar *progBar = new QProgressBar();
  progBar->setValue(20);
  progBar->show();
  
  return a.exec();
}

결과창

5. QTextBrowser 위젯

QTextEdit 클래스를 상속

문서를 구성할 때 기본적으로 사용하는 하이퍼텍스트(HyperText)를 표시할 때 사용

  • 링크(HTML의 a태그)를 마우스 클릭으로 HTML 문서를 이동 가능
  • HTML 문서에 링크(Anchor)가 있을 때 backward(), forward(), home(), reload() 메소드로
    인터넷 탐색에서의 문서 탐색과 같은 기능들을 수행

리치 텍스트 표시

  • HTML 문서의 태그를 그대로 표시 : QTextEdit::setPlainText() 메소드
  • 태그를 HTML 서식으로 바꿔서 표시 : QTextEdit::setHTML() 메소드

HTML 문서 필요

index.html

<html>
  <body>
    <h1>HelloWorld</h1><br>
    <a href=help.html>Help</a>
  </body>
</html>

help.html

<html>
  <body>
    <h1>HelloWorld</h1><br>
    <a href=index.html>Index</a>
  </body>
</html>

main.cpp를 수정

#include <QApplication>
#include <QTextBrowser>
#include <QUrl>

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  
  QTextBrowser *tb = new QTextBrowser();
  tb->setSource(QUrl("index.html"));
  tb->show();
  
  return a.exec();
}

300x250
300x250
Comments