티스토리 뷰
* 다음 환경을 사용하였습니다.
환경이 다를 경우, 일부 API가 동작하지 않을 수 있습니다.
[OS: Ubuntu 14.04.1 LTS]
[Qt Version: 5.4]
QFontMetrics 클래스를 이용하면 된다.
단, 딱 정확한 크기를 구하기 때문에, margin값을 따로 주어야 한다.
int QFontMetix::width(QChar ch) const;
int QFontMetix::width(const QString &text, int len, int flags) const;
int QFontMetix::width(const QString &text, int len = -1) const;
- 함수 이름: width
- 함수 역할: 입력받은 글자의 Pixel 사이즈를 구한다.
- 함수 설명: 각 글자의 logical width를 구하여 반환한다.
- 파라미터 :
- QChar ch: 한 글자의 픽셀을 반환한다.
- QString text: 문자열의 픽셀을 반환한다.
- len : 사용할 문자열의 길이를 지정한다. 만약 음수 값이 입력될 경우, 전체 문자열의 픽셀을 반환한다.
- flags : 라이브러리내에 API는 존재하지만, 공식 레퍼런스에는 API 설명이 공개되어있지 않아 정확한 용도를 알 수 없다.
다음은 예제의 일부
QLabel testLabel("레이블 테스트입니다.");
QFontMetrix fontMetrics(testLabel.font());
const int horizontalMargin = 10;
int labelWidth = fontMetrics.width(testLabel.text()) + widthMargin;
testLabel.setFixedWidth(labelWidth);
Font: Ubuntu
Font Size: 11
상태로, "레이블 테스트입니다." 의 width 는 135가 나온다.
폰트의 크기가 바뀌거나, 사이즈가 바뀌면 width도 자동으로 계산되어 변경된다.
위의 경우는 텍스트의 크기에 따라 레이블의 크기를 변경시키는 것인데,
반대로 Label의 크기에 따라 텍스트를 변경시킬 수 있다.
예를들면 위의 문자열의 가운데 ... 을 넣어서 "레이블...니다."로 변경할 수도 있다.
역시 QFontMetrix 클래스의 elidedText 라는 클래스를 이용하면 된다.
QString QFontMetrics::elidedText(const QString &text, Qt::TextElideMode mode, int width, int flags=0) const;
- 함수 이름: elidedText
- 함수 설명: 텍스트를 일정 길이 이하로 표현하여 되돌려준다. ... 을 찍는 위치는 mode가 결정한다.
- 파라미터:
- text : 라벨에 표현되는 텍스트
- mode : ...을 찍을 위치. 다음 4가지의 모드가 있다.
- Qt::ElideLeft : 텍스트의 시작 부분
- Qt::ElideRight : 텍스트의 끝 부분
- Qt::ElideMiddle : 텍스트의 중간 부분
- Qt::ElideNone : 하지 않는다.
- width : ElidedText로 만들 길이 (보통 위젯의 크기가 된다.)
- flags : 레퍼런스에 정확한 용도가 명시되어 있지 않다.
다음은 예제의 일부이다.
QLabel testLabel("레이블 테스트입니다.");
testLabel.setFixedWidth(100);
QFontMetrix fontMetrics(testLabel.font());
QString strElidedText = fontMetrics.elidedText(
testLabel.text(),
Qt::ElideMiddle,
testLabel.width());
testLabel.setText(strElidedText);
참고
- Qt 공식 레퍼런스 : http://doc.qt.io/qt-5/qfontmetrics.html
* 다음 환경을 사용하였습니다.
환경이 다를 경우, 일부 API가 동작하지 않을 수 있습니다.
[OS: Ubuntu 14.04.1 LTS]
[Qt Version: 5.4]
'C, C++ > Qt Framework' 카테고리의 다른 글
Qt 날짜관련 함수 정리 (1) | 2016.01.28 |
---|---|
[Qt] QString의 문자열 처리 (1) | 2015.06.14 |
- Total
- Today
- Yesterday
- qemu linux arm
- ansi color
- angular2
- 스위프트
- 안시 색상
- observable
- Rx.js
- QT
- typeScript
- JavaScript
- NgZone
- git proxy
- terminal 색
- vim
- ZONES
- zone
- Angular
- ECMA2015
- C언어
- 안시 컬러
- 폰트 조정
- itoa
- 리눅스 터미널 색상
- git 설정
- lua table
- 챗봇
- 타입스크립트
- Swift
- Zone.js
- 우분투 16.04
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |