- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想实现一个 QGraphicsElement,它在圆角矩形内“按原样”绘制文本。
为了实现 QGraphicsElement 我需要实现 boundedRect 函数,所以我需要原样的多行消息的 boundedRect 。
据我了解,这是我需要使用的功能 http://doc.qt.io/qt-4.8/qfontmetrics.html#boundingRect-6因为它说它会将换行符视为换行符。
现在我的问题是这样的,如果我想知道的信息是文本的boundedRect,我怎么需要将boundedRect作为参数传递?
谁能给我一个如何获得多行 QString 的 boundedRect 的例子?或者我是否需要手动计算换行符并将其乘以单行高度?
编辑:
正如 arhzu 所示,作为参数传递的 QRect 用于定义多行文本的包含方式。然而,这没有用。因为我希望所述边界框的宽度不使用自动换行。这应该只是最长字符串的宽度。所以,我再问一下,有没有办法获得这个?或者我应该用换行符分割字符串,然后简单地添加高度并使用找到的最大宽度?
最佳答案
rect
QFontMetrics::boundingRect
的论据限制输入文本的布局。您可以使用 Qt::TextWordWrap
将长行包装到约束矩形内的多行的标志。这是一个允许文本宽度变化的示例:
#include <QApplication>
#include <QFontMetrics>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFontMetrics fm = a.fontMetrics();
QString text = QLatin1String("Multiline text string\n"
"containing both long lines and line breaks\n"
"to\n"
"demonstrate bounding rect calculation");
QList<int> widths = QList<int>() << 100 << 200 << 1000;
foreach(int width, widths) {
qDebug() << "With word wrapping:" << fm.boundingRect(QRect(0,0,width,100), Qt::TextWordWrap, text);
}
foreach(int width, widths) {
qDebug() << "No wrapping" << fm.boundingRect(QRect(0,0,width,100), 0, text);
}
return 0;
}
With word wrapping: QRect(0,0 87x144)
With word wrapping: QRect(0,0 194x96)
With word wrapping: QRect(0,0 236x64)
No wrapping QRect(0,0 236x64)
No wrapping QRect(0,0 236x64)
No wrapping QRect(0,0 236x64)
关于qt - 如何使用 QFontMetrics boundingRect 来测量多行消息的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37671839/
我正在编写一个带圆圈的物理模拟。 Ball.cpp 代码: Ball::Ball() { angle = 0; setRotation(angle); //set the
尝试在 opencv 中使用 boundingRect() 函数时出现错误。给出的是点列表 lists = [] for match in enumerate(matches): lists.
我在使用以下代码时遇到了非常奇怪的问题。 extension String { func height(withConstrainedWidth width: CGFloat, fon
我在使用 QFontMetrics 的“boundingRect”函数时遇到问题,它没有返回正确的结果。 mfntArial = QFont("Arial", 12, QFont::Bold)
我有一些代码,我可以在其中绘制符号并将其附加到绘图中。现在我想知道是否有一个用符号自动创建的边界矩形,这样我就可以编写一些代码来选择符号,以便用户可以编辑它 - 例如选择它以便删除它。 我在 qwt_
我试图在用户移动 QGraphicsRectItem 时获取它的子类的 boundingRect() 。但是,随着矩形在场景中移动,boundingRect() 返回的矩形始终返回边界矩形的原始值。下
我有一个 class Edge : public QGraphicsItem,它实现了从一个节点到另一个节点的绘制箭头(下图)。 现在我需要添加在自己身上画箭头的功能 (arc)。 我无法绘制弧线,覆
我像这样计算 NSAttributedString 的高度。 let maxSize = NSSize(width: w, height: CGFloat.greatestFiniteMagnitud
我一直在尝试使用 QGraphicsItemGroup 来获取一组 QGraphicsItem* 的边界矩形。在我看来,当我将所有项目插入组中时,边界矩形已正确确定;但是如果我随后移动组中的项目,边界
QGraphicsItem::boundingRect () 是一个虚函数,所以我重写了它来处理我自己的一些东西,然后我发现它被重复调用,但我从未从我自己的代码中显式调用它。 谁在召唤它?表演或绘画之
我是 OpenCV 和 Python 的新手,我制作了一个程序来查找面积大于 500 的轮廓并将它们保存到新图像中我按照互联网上的建议使用了 boundingRect,它运行并完成了工作但我得到了图像
谷歌搜索 suggests that it should . 但是拖放机器人 example implementation (在父 Robot 对象上)建议不要: QRectF Robot::boun
我想实现一个 QGraphicsElement,它在圆角矩形内“按原样”绘制文本。 为了实现 QGraphicsElement 我需要实现 boundedRect 函数,所以我需要原样的多行消息的 b
当我尝试通过 NSString 函数 boundingRect 包装到盒子中并注意初始插入 (8,0,8,0) 时,我尝试使用以下方法计算文本的每一帧: let size = CGSize(width
在我的应用程序中,我在UITextView中的文本行下绘制自定义背景。为此,我使用boundingRect(forGlyphRange:in:)的NSLayoutManager方法。它适用于LTR语言
Kwadrat 类有什么问题?我有一个错误: Invalid new-expression of abstract class type 'Kwadrat' Kwadrat* kwadrat = ne
我正在使用 Qt 5.2,我目前正在尝试从 QTableView 打印一个表格,但是我在根据内容计算行高时遇到了这个问题。我现在得到的是下面的循环,它循环遍历 QTableView 行并使用 boun
我以为我可以使用下面的代码在它离开场景后删除任何项目,但事实并非如此。在尝试了不同的实现之后,我想我应该尝试另一种方法。有些 QGraphicsItems 实际上是在 boundingRect 之外开
我目前在 UITextField 上有以下扩展来计算给定字符串的边界矩形。 func widthHeight(font: UIFont) -> CGRect { let constraintR
我已经尝试了多种方法来围绕minAreaRect()创建boundingRect(),但是我一直遇到错误。我可以简单地使用原始轮廓,但是,这是要理解为什么与cv2.isContourConvex()和
我是一名优秀的程序员,十分优秀!