QTabel在QT中呈现文本的"文本溢出"

Mar*_*rio 20 layout qt text-styling css3 qlabel

我在一个小部件中有一个QLabel元素,可以调整大小.文本可以溢出边界,所以我需要,为了使应用程序看起来更优雅,某些方法使文本在文本中最后一个完全可见的单词之后生成省略号(...).

在HTML/CSS中制作布局我以前用过text-overflow: ellipsis;这个,但是对于QT类我没有找到任何关于此的信息.

ser*_*nko 37

在您的标签调整大小事件中,您可以使用窗口小部件的新宽度创建省略文本并重置文本.使用QFontMetrics :: elidedText方法获取字符串的省略版本.

QString text("some long text without elipsis");
QFontMetrics metrics(label->font());
QString elidedText = metrics.elidedText(text, Qt::ElideRight, label->width());
label->setText(elidedText);
Run Code Online (Sandbox Code Playgroud)

希望这有帮助,问候


Kar*_*ory 7

我修改了上面描述的解决方案并创建了一个函数:

static void SetTextToLabel(QLabel *label, QString text)
{
    QFontMetrics metrix(label->font());
    int width = label->width() - 2;
    QString clippedText = metrix.elidedText(text, Qt::ElideRight, width);
    label->setText(clippedText);
}
Run Code Online (Sandbox Code Playgroud)

希望它会有用.