티스토리 뷰

02.윈도우/Qt

QFontMetrics elidedText

피자돌이 2014. 2. 24. 16:13
반응형

Qt에서 줄임말(...)을 표현하고자 할 때 필요하다.

C++ DrawText 에서 텍스트 포맷의 "DT_END_ELLIPSIS"  같은 역할을 한다.

1. 줄임말이 필요 없는 경우

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
32
33
34
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    
    //Label Width Setting
    int nLabelWidth = 50;
    QString sSourceText("ElideText");
 
    //Font Setting
    QFont font("Arial");
    font.setPixelSize(10);
    ui->label->setFont(font);
    ui->label->setFixedWidth(nLabelWidth);
    ui->label->setFrameShape(QFrame::Box);
    ui->label->setAlignment(Qt::AlignCenter);
    ui->label->setMargin(0);
 
    //ElidedText
    QFontMetrics fm(font);
    QString sElideText = fm.elidedText(sSourceText, Qt::ElideRight, ui->label->width());
    QSize size = fm.size(Qt::TextSingleLine, sSourceText);
 
    ui->label->setText(sElideText);
 
    //LabelWidth
    QString sLabelWidth = QString("LabelWidth:%1").arg(ui->label->width());
    ui->label_2->setText(sLabelWidth);
 
    //TextWidth
    QString sTextWidth = QString("TextWidth:%1").arg(size.width());
    ui->label_3->setText(sTextWidth);
}

Output :


2. 줄임말이 필요한 경우 : int nLabelWidth = 40;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    
    //Label Width Setting
    int nLabelWidth = 40;
    QString sSourceText("ElideText");
 
    //Font Setting
    ...
 
    //ElidedText
    ...
    
    //LabelWidth
    ...
 
    //TextWidth
    ...
}

Output :


※ 핵심코드

1
2
    QFontMetrics fm(font);
    QString sElideText = fm.elidedText("BlahBlahBlah", Qt::ElideRight, ui->label->width());


반응형

'02.윈도우 > Qt' 카테고리의 다른 글

Qt에서 현재경로 가져오기  (0) 2014.03.10
Drag&Drop Event  (0) 2014.03.07
Qt Creator Color Scheme & KeyboardSetting  (0) 2014.02.19
Qt 실행시간 체크 - QTime  (0) 2014.02.19
qDebug() to File  (0) 2014.02.18
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
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
글 보관함