- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用QTextTable和QTextTableFormat创建PDF文件,并将HTML代码插入表格单元格。"<span style=\"font-weight: bold; font-size: %1px\">%2</span>"
我想缩小表格标题内容,使其适合2行。我使用QFontMetrics来计算我要显示的字符串的宽度,然后开始减小字体大小直到适合它。我允许的最小字体大小是8pixel,如果文本更宽,我用(。 )。
问题:我计算了单元格的最大宽度,比如说50,因此,标题的2行宽度将为100。我将文本缩小为90像素,如果文本类似于“iii”,它仍然不适合aaaaaaaaa”,因为第二个单词比第一个单词长很多。第一个单词将占据整个第一行,即使只有大约20像素宽,第二个单词也将分成两行
e导致3行。
我正在寻找的是一种检测或计算使用QFont
插入到QString
上的给定QTextDocument
和QTextTableFormat
是否会导致多少行的方法
最佳答案
您可以使用以下简单函数来计算行数:
QStringList getLines(const QFontMetrics & metrics, const QString & source, const int maxwidth)
{
QStringList lines;
QString text;
for(auto c : source)
{
if(metrics.horizontalAdvance(text + c) > maxwidth)
{
lines << text;
text.clear();
}
text.append(c);
}
lines << text;
return lines;
}
QString setEllipses(const QFontMetrics & metrics, const QString & source, const int maxwidth)
{
QString text;
int i = 0;
while((i <= source.length()) && (metrics.horizontalAdvance(text) < maxwidth))
{
text = source.left(++i) + " ...";
}
return text;
}
auto lines = getLines(metrics, original_text, maxwidth);
if(lines.size() > 2)
{
QString celltext = lines[0] + "<br>" + setEllipses(metrics, lines[1], 300);
//...
}
关于c++ - Qt写入QTextTable时检测断线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59732038/
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
请参阅以下玩具示例。 任何帮助将不胜感激!谢谢! shinyApp( ui = fluidPage( actionButton("btnId", "I want a line break he
我收到如下 JSON 响应: Lorem ipsum ¦dolor sit amet 我想做的是替换所有broken bars (|)。 我尝试过 .replaceAll("\u00A6", "");
我正在尝试学习图像特征检测技术。 我已经设法检测到水平线(不间断/连续),但是我无法检测到图像中的所有虚线/断线。 这是我的测试图片,你可以看到有虚线和一些文本/框等。 到目前为止,我使用了以下代码,
我有一个 json 文件,其中包含一些文本,其中一些文本可能有一些断线 "surchargeNoteText":"Please note \r \n that pre-payments will ta
我正在尝试制作一个 html + css 网站,我试图为一个跨度(具有 .float 类)制作一个正确的 float ,但它打破了一条线,我想知道如何防止它打破一个线?我尝试了 display:inl
我有 2 个 float div,我想将它们放在同一行上,它们加起来超过 1024 像素宽,因此它们需要水平窗口滚动,但尽管它们用 white-space:nowrap;
我是一名优秀的程序员,十分优秀!