- 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/
有人向我解释这个测试程序的结果吗? #include #include #include int main(int argc, char *argv[]) { QApplication
我在使用 QFontMetrics 的“boundingRect”函数时遇到问题,它没有返回正确的结果。 mfntArial = QFont("Arial", 12, QFont::Bold)
我目前正在渲染一个简单的QGraphicsItem。为了提高渲染性能,在构造函数中计算了它的几个内部组件的边界框。 但是我在文本宽度方面遇到了真正的问题,如下图所示: 我用绿线渲染了计算出的 BB,这
我的 QTableWidget 中有一个自定义委托(delegate),用于在用户搜索某些内容时突出显示匹配项。不幸的是,矩形位置通常不适合某些字符或短语,或者取决于匹配的数量或前导字符串的大小。我找
我想实现一个 QGraphicsElement,它在圆角矩形内“按原样”绘制文本。 为了实现 QGraphicsElement 我需要实现 boundedRect 函数,所以我需要原样的多行消息的 b
Windows 7 SP1 MSVS 2010 Qt 4.8.4 我想确定 QLineEdit 小部件的最大大小,知道必须放入其中的最大字符数。 因此,我想使用: int QFontMetrics::
为什么 next 函数返回 0 ?(我的环境是:Windows Vista、vc++9、Qt4.5) int func() { QPushButton button("Blah blah");
这发生在 Linux 上。 执行此代码时出现问题(我在小部件的绘制事件中绘制): painter.drawText(0, 0, 1000, 1000, 0, QString("0"), &charBo
我正在创建一个自定义标签,希望它具有 13 像素高的文本,并将标签的最大高度设置为 14。 textFont.setFamily("Frutiger LT Com 55 Roman"); textFo
我是一名优秀的程序员,十分优秀!