QLabel 展示富文本
QLabel 通过对部分 HTML 标签的支持,进而支持富文本的展示。
可以看下面的例子:
auto label = new QLabel();
label->setStyleSheet("background-color:#FFE384");
label->setOpenExternalLinks(true); // 点击后跳转到对应链接
QString linked_url = "https://doc.qt.io/qt-6/richtext-html-subset.html";
QString desc = QString("请到官网预览详情 ")
+ "<a style='text-decoration:none;"
"color:blue;font-weight:400;' href='" + "%1" + "'>"
+ "立即预览" + "</a>";
label->setText(desc.arg(linked_url));
效果如下:
这样,点击 立即预览 就可以跳转到 Qt 对 html 支持的介绍网页了。
再例如加上
标签用于创建换行。
desc = QString("请到官网预览详情 ")
+ "<br><a style='text-decoration:none;"
"color:blue;font-weight:400;' href='" + "%1" + "'>"
+ "立即预览" + "</a>";
例如通过 text-decoration CSS 属性设置文本的装饰效果,这里加上下划线。
desc = QString("请到官网预览详情 ")
+ "<br><a style='text-decoration:none;"
"color:blue;font-weight:400;' href='" + "%1" + "'>"
+ "立即预览" + "</a>";
QLabel 还支持很多的 html 标签,具体可以查看 Qt 文档:https://doc.qt.io/qt-6/richtext-html-subset.html
QLabel 文本过长时 … 的处理
当 QLabel 所要显示的文本过长时,可以通过 QFontMetrics 类的 elidedText 方法获取到含有 … 的文本。
elidedText 方法介绍具体可以查看 Qt 文档: https://doc.qt.io/qt-6/qfontmetrics.html#elidedText
当文本长度大于 QLabel 时,返回 elided text;否则返回原字符串。
auto label = new QLabel();
label->resize(100, 50);
QFontMetrics metrics(w.Label()->font());
QString elidedText = metrics.elidedText(desc, Qt::ElideRight, w.Label()->width());
w.Label()->setText(desc);
注意,要显示 elided text 的必要条件是 QLabel 是固定宽度的。