本文整理汇总了C++中QTextLine::setLineWidth方法的典型用法代码示例。如果您正苦于以下问题:C++ QTextLine::setLineWidth方法的具体用法?C++ QTextLine::setLineWidth怎么用?C++ QTextLine::setLineWidth使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QTextLine
的用法示例。
在下文中一共展示了QTextLine::setLineWidth方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setupLayout
static QTextLine setupLayout(QTextLayout* layout, const TextRun& style)
{
int flags = style.rtl() ? Qt::TextForceRightToLeft : Qt::TextForceLeftToRight;
if (style.padding())
flags |= Qt::TextJustificationForced;
layout->setFlags(flags);
layout->beginLayout();
QTextLine line = layout->createLine();
line.setLineWidth(INT_MAX/256);
if (style.padding())
line.setLineWidth(line.naturalTextWidth() + style.padding());
layout->endLayout();
return line;
}
示例2: descriptionHeight
int JobItem::descriptionHeight(const QStyleOptionViewItem & option)
{
int textTotalWidth = 0;
int lineWidth = option.rect.width() - 2 * m_itemPadding;
QString description = m_job->description().simplified();
QTextLayout descriptionLayout(description, m_descriptionFont, m_paintDevice);
descriptionLayout.beginLayout();
for (int i = 0; i < m_descriptionLineCount - 1; ++i)
{
QTextLine line = descriptionLayout.createLine();
if (!line.isValid())
{
// There is no text left to be inserted into the layout.
break;
}
line.setLineWidth(lineWidth);
textTotalWidth += line.naturalTextWidth();
}
descriptionLayout.endLayout();
// Add space for last visible line.
textTotalWidth += lineWidth;
m_descriptionText = m_descriptionFontMetrics.elidedText(description,
Qt::ElideRight,
textTotalWidth);
m_descriptionRect =
m_descriptionFontMetrics.boundingRect(0,
0,
option.rect.width() - 2 * m_itemPadding,
0,
descriptionFlags(),
m_descriptionText);
return m_descriptionRect.height();
}
示例3: paint_QTextLayout
void paint_QTextLayout(QPainter &p, bool useCache)
{
static bool first = true;
static QTextLayout *textLayout[lines];
if (first) {
for (int i = 0; i < lines; ++i) {
textLayout[i] = new QTextLayout(strings[i]);
int leading = p.fontMetrics().leading();
qreal height = 0;
qreal widthUsed = 0;
textLayout[i]->setCacheEnabled(useCache);
textLayout[i]->beginLayout();
while (1) {
QTextLine line = textLayout[i]->createLine();
if (!line.isValid())
break;
line.setLineWidth(lineWidth);
height += leading;
line.setPosition(QPointF(0, height));
height += line.height();
widthUsed = qMax(widthUsed, line.naturalTextWidth());
}
textLayout[i]->endLayout();
}
first = false;
}
for (int i = 0; i < count; ++i) {
for (int j = 0; j < lines; ++j) {
textLayout[j]->draw(&p, QPoint(0, j*spacing));
}
}
}
示例4: drawText
void RowHeader::drawText(QPainter* painter, const QFont& font,
qreal ypos, qreal width, const QString& text) const
{
register Sheet * const sheet = m_pCanvas->activeSheet();
if (!sheet)
return;
const double scaleX = POINT_TO_INCH(double(KoDpi::dpiX()));
const double scaleY = POINT_TO_INCH(double(KoDpi::dpiY()));
// Qt scales the font already with the logical resolution. Do not do it twice!
painter->save();
painter->scale(1.0 / scaleX, 1.0 / scaleY);
QTextLayout textLayout(text, font);
textLayout.beginLayout();
textLayout.setTextOption(QTextOption(Qt::AlignHCenter));
forever {
QTextLine line = textLayout.createLine();
if (!line.isValid())
break;
line.setLineWidth(width * scaleX);
}
textLayout.endLayout();
QPointF loc(0, ypos * scaleY);
textLayout.draw(painter, loc);
painter->restore();
}
示例5: layoutText
void YTDelegate::layoutText(QTextLayout& textLayout, QString text, QSize constraint) const
{
QTextOption textOption(Qt::AlignJustify);
textLayout.setTextOption(textOption);
textLayout.setText(text);
textLayout.beginLayout();
int lHeight = 0;
while(true){
QTextLine line = textLayout.createLine();
if(!line.isValid())
break;
line.setLineWidth(constraint.width());
line.setPosition(QPointF(0, lHeight));
if(lHeight + line.height() > constraint.height())
{
QTextLine lastLine = textLayout.lineAt(textLayout.lineCount() - 2);
QString lastString = text.mid(lastLine.textStart());
QFontMetrics fm(textLayout.font());
text.chop(lastString.length());
text += fm.elidedText(lastString, Qt::ElideRight, constraint.width()-1);
textLayout.endLayout();
layoutText(textLayout, text, constraint);
return;
}
lHeight += line.height();
lHeight += line.leading();
}
textLayout.endLayout();
}
示例6: setUnicodeText
void setUnicodeText(const QString &text, const QFont &font, const QColor &color)
{
deleteContent();
QRawFont raw_font = QRawFont::fromFont(font, QFontDatabase::Latin);
qreal line_width = raw_font.averageCharWidth() * text.size();
QSGRenderContext *sgr = QQuickItemPrivate::get(m_owner)->sceneGraphRenderContext();
QTextLayout layout(text,font);
layout.beginLayout();
QTextLine line = layout.createLine();
line.setLineWidth(line_width);
//Q_ASSERT(!layout.createLine().isValid());
layout.endLayout();
QList<QGlyphRun> glyphRuns = line.glyphRuns();
qreal xpos = 0;
for (int i = 0; i < glyphRuns.size(); i++) {
QSGGlyphNode *node = sgr->sceneGraphContext()->createGlyphNode(sgr, false);
node->setOwnerElement(m_owner);
node->geometry()->setIndexDataPattern(QSGGeometry::StaticPattern);
node->geometry()->setVertexDataPattern(QSGGeometry::StaticPattern);
node->setGlyphs(QPointF(xpos, raw_font.ascent()), glyphRuns.at(i));
node->setStyle(QQuickText::Normal);
node->setColor(color);
xpos += raw_font.averageCharWidth() * glyphRuns.at(i).positions().size();
node->update();
appendChildNode(node);
}
}
示例7: setName
void FileMetaDataToolTip::setName(const QString& name)
{
QTextOption textOption;
textOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
const QString processedName = Qt::mightBeRichText(name) ? name : KStringHandler::preProcessWrap(name);
QTextLayout textLayout(processedName);
textLayout.setFont(m_name->font());
textLayout.setTextOption(textOption);
QString wrappedText;
wrappedText.reserve(processedName.length());
// wrap the text to fit into the maximum width of m_name
textLayout.beginLayout();
QTextLine line = textLayout.createLine();
while (line.isValid()) {
line.setLineWidth(m_name->maximumWidth());
wrappedText += processedName.midRef(line.textStart(), line.textLength());
line = textLayout.createLine();
if (line.isValid()) {
wrappedText += QChar::LineSeparator;
}
}
textLayout.endLayout();
m_name->setText(wrappedText);
}
示例8: layoutText
void TextLabel::layoutText(QTextLayout &layout, const QString &text, const QSize &constraints)
{
QFontMetrics metrics(layout.font());
int leading = metrics.leading();
int height = 0;
int maxWidth = constraints.width();
int widthUsed = 0;
int lineSpacing = metrics.lineSpacing();
QTextLine line;
layout.setText(text);
layout.beginLayout();
while ((line = layout.createLine()).isValid()) {
height += leading;
// Make the last line that will fit infinitely long.
// drawTextLayout() will handle this by fading the line out
// if it won't fit in the constraints.
if (height + 2 * lineSpacing > constraints.height()) {
line.setPosition(QPoint(0, height));
break;
}
line.setLineWidth(maxWidth);
line.setPosition(QPoint(0, height));
height += int(line.height());
widthUsed = int(qMax(qreal(widthUsed), line.naturalTextWidth()));
}
layout.endLayout();
}
示例9: textFontMetrics
//virtual
void PixButton::redoLabelTextLayout()
{
//TODO: somewhat wasteful. If there is no label, should just exit early and leave a layout that will be left unrendered by paint()
m_textLayoutObject.clearLayout();
m_textLayoutObject.setText(m_label);
m_textLayoutObject.setFont(m_textFont);
QTextOption textOpts;
textOpts.setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
textOpts.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
m_textLayoutObject.setTextOption(textOpts);
QFontMetrics textFontMetrics(m_textFont);
int leading = textFontMetrics.leading();
int rise = textFontMetrics.ascent();
qreal height = 0;
m_textLayoutObject.beginLayout();
while (height < m_labelMaxGeom.height()) {
QTextLine line = m_textLayoutObject.createLine();
if (!line.isValid())
break;
line.setLineWidth(m_labelMaxGeom.width());
if (m_textLayoutObject.lineCount() > 1)
{
height += leading;
}
line.setPosition(QPointF(0, height));
height += line.height();
}
height = qMin((quint32)DimensionsGlobal::roundUp(height),(quint32)m_labelMaxGeom.height());
height = DimensionsGlobal::roundDown(height) - (DimensionsGlobal::roundDown(height) % 2); //force to an even #
m_textLayoutObject.endLayout();
//TODO: PIXEL-ALIGN
m_labelGeom = DimensionsGlobal::realRectAroundRealPoint(QSizeF(m_textLayoutObject.boundingRect().width(),height)).toAlignedRect();
}
示例10: recalculateTextLayout
void TestResultDelegate::recalculateTextLayout(const QModelIndex &index, const QString &output,
const QFont &font, int width) const
{
if (m_lastProcessedIndex == index && m_lastProcessedFont == font)
return;
const QFontMetrics fm(font);
const int leading = fm.leading();
const int fontHeight = fm.height();
m_lastProcessedIndex = index;
m_lastProcessedFont = font;
m_lastCalculatedHeight = 0;
m_lastCalculatedLayout.clearLayout();
m_lastCalculatedLayout.setText(output);
m_lastCalculatedLayout.setFont(font);
QTextOption txtOption;
txtOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
m_lastCalculatedLayout.setTextOption(txtOption);
m_lastCalculatedLayout.beginLayout();
while (true) {
QTextLine line = m_lastCalculatedLayout.createLine();
if (!line.isValid())
break;
line.setLineWidth(width);
m_lastCalculatedHeight += leading;
line.setPosition(QPoint(0, m_lastCalculatedHeight));
m_lastCalculatedHeight += fontHeight;
}
m_lastCalculatedLayout.endLayout();
}
示例11: drawDisplay
void PluginListDelegate::drawDisplay(QPainter* painter, const QStyleOptionViewItem &option, const QRect &rect, const QString &text) const
{
QTextDocument textDocument;
textDocument.setHtml(text);
QTextLayout textLayout(textDocument.begin());
textLayout.setFont(option.font);
const int textMargin = QApplication::style()->pixelMetric(QStyle::PM_FocusFrameHMargin, 0) + 1;
QRect textRect = rect.adjusted(textMargin, 0, -textMargin, 0); // remove width padding
textLayout.beginLayout();
qreal height = 0;
while (1) {
QTextLine line = textLayout.createLine();
if (!line.isValid()) {
break;
}
line.setLineWidth(textRect.width());
height += 3;
line.setPosition(QPoint(0, height));
height += line.height();
}
textLayout.endLayout();
textLayout.draw(painter, QPointF(textRect.left(), textRect.top()));
}
示例12: drawText
void KCRowHeader::drawText(QPainter& painter, const QFont& font,
const QPointF& location, const QString& text) const
{
register KCSheet * const sheet = m_pView->activeSheet();
if (!sheet)
return;
const double scaleX = POINT_TO_INCH(double(KoDpi::dpiX()));
const double scaleY = POINT_TO_INCH(double(KoDpi::dpiY()));
// Qt scales the font already with the logical resolution. Do not do it twice!
painter.save();
painter.scale(1.0 / scaleX, 1.0 / scaleY);
QTextLayout textLayout(text, font);
textLayout.beginLayout();
forever {
QTextLine line = textLayout.createLine();
if (!line.isValid())
break;
line.setLineWidth(width() * scaleX);
}
textLayout.endLayout();
QPointF loc(location.x() * scaleX, location.y() * scaleY);
textLayout.draw(&painter, loc);
painter.restore();
}
示例13: doLayout
void ChatItem::doLayout(QTextLayout *layout) const {
layout->beginLayout();
QTextLine line = layout->createLine();
if(line.isValid()) {
line.setLineWidth(width());
line.setPosition(QPointF(0,0));
}
layout->endLayout();
}
示例14: textLayout
QStringList
StatusEventItemDelegate::layoutText(const QString &text,
const QFont &font,
int maxLineWidth,
int maxLines,
int *textHeight)
{
QTextLayout textLayout(text, font);
QFontMetrics fontMetrics(font);
QStringList lines;
qreal height = 0.0;
textLayout.beginLayout();
while (lines.size() < maxLines) {
QTextLine line = textLayout.createLine();
if (! line.isValid())
break;
if (maxLines <= 0 || lines.size() < maxLines-1) {
// Wrap the current line at or below the maximum line width
line.setLineWidth(maxLineWidth);
lines.append(text.mid(line.textStart(), line.textLength()));
} else {
// Set the line width beyond the max line width, and then elide it
// so the user has a visible indication that the full message is
// longer than what is visible.
line.setLineWidth(2 * maxLineWidth);
lines.append(fontMetrics.elidedText(text.mid(line.textStart()),
Qt::ElideRight,
maxLineWidth));
}
height += fontMetrics.leading() + line.height();
}
textLayout.endLayout();
if (textHeight)
*textHeight = qRound(height);
return lines;
}
示例15: viewItemTextLayout
// Origin: Qt
static void viewItemTextLayout ( QTextLayout &textLayout, int lineWidth, qreal &height, qreal &widthUsed )
{
height = 0;
widthUsed = 0;
textLayout.beginLayout();
while ( true )
{
QTextLine line = textLayout.createLine();
if ( !line.isValid() )
break;
line.setLineWidth ( lineWidth );
line.setPosition ( QPointF ( 0, height ) );
height += line.height();
widthUsed = qMax ( widthUsed, line.naturalTextWidth() );
}
textLayout.endLayout();
}