牛骨文教育服务平台(让学习变的简单)
博文笔记

QLabel 定长后字符串超出部分显示三个点...

创建时间:2011-12-05 投稿人: 浏览次数:1963

我的QLabel都是定长的,但字符串却是不定长的。势必在一些情形下,字符串显示不全。

我想在显示不全时,人为在尾端加上“...”三个点,以示用户。

QString QFontMetrics::elidedText ( const QString & text, Qt::TextElideMode mode, int width, int flags = 0 ) const

现在OK了。有一点,多行的文本打...,elidedText的第3个width参数需乘个行数。。


#define SIZE_W     100
#define SIZE_H     30

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->resize(SIZE_W*2, SIZE_H*6);
    m_pButton = new QPushButton(this);
    m_pButton->setText("btn");
    m_pButton->setFixedSize(SIZE_W, SIZE_H);
    m_pButton->move(0, SIZE_H*0);

    QString text1("This is a simple QLabel object text!");
    QFont ft;
    QFontMetrics fm(ft);
    QString text2 = fm.elidedText(text1, Qt::ElideRight, SIZE_W);
    QString text3 = fm.elidedText(text1, Qt::ElideRight, SIZE_W*2);

    m_pLabel1 = new QLabel(this);
    m_pLabel1->setFixedSize(SIZE_W, SIZE_H);
    m_pLabel1->move(0, SIZE_H*1);
    m_pLabel1->setText(text1);

    m_pLabel2 = new QLabel(this);
    m_pLabel2->setFixedSize(SIZE_W, SIZE_H);
    m_pLabel2->move(0, SIZE_H*2);
    m_pLabel2->setText(text2);

    m_pLabel3 = new QLabel(this);
    m_pLabel3->setFixedSize(SIZE_W, SIZE_H);
    m_pLabel3->setWordWrap(true);
    m_pLabel3->setAlignment(Qt::AlignTop);
    m_pLabel3->move(0, SIZE_H*3);
    m_pLabel3->setText(text3);
}


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。