本文整理汇总了C++中QTextFormat类的典型用法代码示例。如果您正苦于以下问题:C++ QTextFormat类的具体用法?C++ QTextFormat怎么用?C++ QTextFormat使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了QTextFormat类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: documentHitPost
void ChatAreaWidget::mouseReleaseEvent(QMouseEvent * event)
{
QTextEdit::mouseReleaseEvent(event);
QPointF documentHitPost(event->pos().x() + horizontalScrollBar()->value(), event->pos().y() + verticalScrollBar()->value());
int pos = this->document()->documentLayout()->hitTest(documentHitPost, Qt::ExactHit);
if (pos > 0)
{
QTextCursor cursor(document());
cursor.setPosition(pos);
if(!cursor.atEnd())
{
cursor.setPosition(pos+1);
QTextFormat format = cursor.charFormat();
if (format.isImageFormat())
{
QString imageName = format.toImageFormat().name();
if (QRegExp("^data:ftrans.*").exactMatch(imageName))
{
QString data = imageName.right(imageName.length() - 12);
int endpos = data.indexOf("/png;base64");
data = data.left(endpos);
int middlepos = data.indexOf(".");
QString widgetID = data.left(middlepos);
QString widgetBtn = data.right(data.length() - middlepos - 1);
qDebug() << "ChatAreaWidget::mouseReleaseEvent:" << widgetID << widgetBtn;
emit onFileTranfertInterract(widgetID, widgetBtn);
}
}
}
}
}
示例2: setFormat
void QSyntaxHighlighter::setFormat( int start, int count, const QFont &font, const QColor &color )
{
if ( !para || count <= 0 )
return;
QTextFormat *f = 0;
f = para->document()->formatCollection()->format( font, color );
para->setFormat( start, count, f );
f->removeRef();
}
示例3: string2Id
void QSASyntaxHighlighter::updateStyles( const QMap<QString, ConfigStyle> &styles )
{
for ( QMap<QString, ConfigStyle>::ConstIterator it = styles.begin(); it != styles.end(); ++it ) {
int id = string2Id( it.key() );
QTextFormat *f = format( id );
if ( !f )
continue;
f->setFont( (*it).font );
f->setColor( (*it).color );
}
}
示例4: formatId
void QTextOdfWriter::writeFormats(QXmlStreamWriter &writer, QSet<int> formats) const
{
writer.writeStartElement(officeNS, QString::fromLatin1("automatic-styles"));
QVector<QTextFormat> allStyles = m_document->allFormats();
QSetIterator<int> formatId(formats);
while(formatId.hasNext()) {
int formatIndex = formatId.next();
QTextFormat textFormat = allStyles.at(formatIndex);
switch (textFormat.type()) {
case QTextFormat::CharFormat:
if (textFormat.isTableCellFormat())
writeTableCellFormat(writer, textFormat.toTableCellFormat(), formatIndex);
else
writeCharacterFormat(writer, textFormat.toCharFormat(), formatIndex);
break;
case QTextFormat::BlockFormat:
writeBlockFormat(writer, textFormat.toBlockFormat(), formatIndex);
break;
case QTextFormat::ListFormat:
writeListFormat(writer, textFormat.toListFormat(), formatIndex);
break;
case QTextFormat::FrameFormat:
writeFrameFormat(writer, textFormat.toFrameFormat(), formatIndex);
break;
case QTextFormat::TableFormat:
;break;
}
}
writer.writeEndElement(); // automatic-styles
}
示例5: formatDifference
QTextFormat HtmlExporter::formatDifference( const QTextFormat &from, const QTextFormat &to )
{
//kDebug();
QTextFormat diff = to;
const QMap<int, QVariant> props = to.properties();
for ( QMap<int, QVariant>::ConstIterator it = props.begin(), end = props.end();
it != end; ++it )
if ( it.value() == from.property( it.key() ) )
diff.clearProperty( it.key() );
return diff;
}
示例6: drawObject
//![1]
void SvgTextObject::drawObject(QPainter *painter, const QRectF &rect,
QTextDocument * /*doc*/, int /*posInDocument*/,
const QTextFormat &format)
{
QImage bufferedImage = qVariantValue<QImage>(format.property(Window::SvgData));
painter->drawImage(rect, bufferedImage);
}
示例7: drawObject
void CaretInterface::drawObject(QPainter *painter, const QRectF &rect, QTextDocument *, int, const QTextFormat &format)
{
painter->setRenderHint(QPainter::Antialiasing, true);
int c = format.property(Color).toInt();
QColor color(c & 0xff, (c & 0xff00) / 0x100, (c & 0xff0000) / 0x10000);
QString text = format.property(Text).toString();
painter->setFont(m_font);
// painter->fillRect(rect, QBrush(color));
painter->setBrush(QBrush(color));
painter->setPen(QPen(Qt::NoPen));
QRectF r2( rect.x(), rect.y() + 2, rect.width(), rect.height() + 2);
painter->drawRoundedRect(r2, 3, 3);
painter->setPen(QPen(Qt::white));
QRectF r( rect.x() + 2, rect.y() + 3, rect.width() - 4, rect.height() - 2);
painter->drawText(r, text);
painter->setRenderHint(QPainter::Antialiasing, false);
}
示例8: intrinsicSize
QSizeF QTextImageHandler::intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format)
{
Q_UNUSED(posInDocument)
const QTextImageFormat imageFormat = format.toImageFormat();
if (qApp->thread() != QThread::currentThread())
return getImageSize(doc, imageFormat);
return getPixmapSize(doc, imageFormat);
}
示例9: QPoint
void
WidgetTextObject::drawObject(QPainter *painter, const QRectF &rect, QTextDocument * /*doc*/, int /*posInDocument*/, const QTextFormat &format)
{
QWidget* widget = qVariantValue<QWidget*>(format.property( 1 ));
widget->render( painter, QPoint( 0, 0 ));
//Adjusted to allow for the margin
QRect contentsRect = rect.toRect().adjusted(0, 0, -kMargin.width(), -kMargin.height());
m_widgetRects[widget] = contentsRect;
}
示例10: if
int QTextCopyHelper::convertFormatIndex(const QTextFormat &oldFormat, int objectIndexToSet)
{
QTextFormat fmt = oldFormat;
if (objectIndexToSet != -1) {
fmt.setObjectIndex(objectIndexToSet);
} else if (fmt.objectIndex() != -1) {
int newObjectIndex = objectIndexMap.value(fmt.objectIndex(), -1);
if (newObjectIndex == -1) {
QTextFormat objFormat = src->formatCollection()->objectFormat(fmt.objectIndex());
Q_ASSERT(objFormat.objectIndex() == -1);
newObjectIndex = formatCollection.createObjectIndex(objFormat);
objectIndexMap.insert(fmt.objectIndex(), newObjectIndex);
}
fmt.setObjectIndex(newObjectIndex);
}
int idx = formatCollection.indexForFormat(fmt);
Q_ASSERT(formatCollection.format(idx).type() == oldFormat.type());
return idx;
}
示例11: intrinsicSize
//![0]
QSizeF SvgTextObject::intrinsicSize(QTextDocument * /*doc*/, int /*posInDocument*/,
const QTextFormat &format)
{
QImage bufferedImage = qVariantValue<QImage>(format.property(Window::SvgData));
QSize size = bufferedImage.size();
if (size.height() > 25)
size *= 25.0 / (double) size.height();
return QSizeF(size);
}
示例12: drawObject
void QTextImageHandler::drawObject(QPainter *p, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format)
{
Q_UNUSED(posInDocument)
const QTextImageFormat imageFormat = format.toImageFormat();
if (qApp->thread() != QThread::currentThread()) {
const QImage image = getImage(doc, imageFormat);
p->drawImage(rect, image, image.rect());
} else {
const QPixmap pixmap = getPixmap(doc, imageFormat);
p->drawPixmap(rect, pixmap, pixmap.rect());
}
}
示例13: drawObject
/*!
\fn void QAbstractTextDocumentLayout::drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format)
This function is called to draw the inline object, \a object, with the
given \a painter within the rectangle specified by \a rect using the
specified text \a format.
\a posInDocument specifies the position of the object within the document.
The default implementation calls drawObject() on the object handlers. This
function is called only within Qt. Subclasses can reimplement this function
to customize the drawing of inline objects.
\sa draw()
*/
void QAbstractTextDocumentLayout::drawInlineObject(QPainter *p, const QRectF &rect, QTextInlineObject item,
int posInDocument, const QTextFormat &format)
{
Q_UNUSED(item);
Q_D(QAbstractTextDocumentLayout);
QTextCharFormat f = format.toCharFormat();
Q_ASSERT(f.isValid());
QTextObjectHandler handler = d->handlers.value(f.objectType());
if (!handler.component)
return;
handler.iface->drawObject(p, rect, document(), posInDocument, format);
}
示例14: intrinsicSize
/*!
Sets the size of the inline object \a item corresponding to the text
\a format.
\a posInDocument specifies the position of the object within the document.
The default implementation resizes the \a item to the size returned by
the object handler's intrinsicSize() function. This function is called only
within Qt. Subclasses can reimplement this function to customize the
resizing of inline objects.
*/
void QAbstractTextDocumentLayout::resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)
{
Q_D(QAbstractTextDocumentLayout);
QTextCharFormat f = format.toCharFormat();
Q_ASSERT(f.isValid());
QTextObjectHandler handler = d->handlers.value(f.objectType());
if (!handler.component)
return;
QSizeF s = handler.iface->intrinsicSize(document(), posInDocument, format);
item.setWidth(s.width());
item.setAscent(s.height());
item.setDescent(0);
}
示例15: beginEditBlock
void QTextDocumentPrivate::setCharFormat(int pos, int length, const QTextCharFormat &newFormat, FormatChangeMode mode)
{
beginEditBlock();
Q_ASSERT(newFormat.isValid());
int newFormatIdx = -1;
if (mode == SetFormatAndPreserveObjectIndices) {
QTextCharFormat cleanFormat = newFormat;
cleanFormat.clearProperty(QTextFormat::ObjectIndex);
newFormatIdx = formats.indexForFormat(cleanFormat);
} else if (mode == SetFormat) {
newFormatIdx = formats.indexForFormat(newFormat);
}
if (pos == -1) {
if (mode == MergeFormat) {
QTextFormat format = formats.format(initialBlockCharFormatIndex);
format.merge(newFormat);
initialBlockCharFormatIndex = formats.indexForFormat(format);
} else if (mode == SetFormatAndPreserveObjectIndices
&& formats.format(initialBlockCharFormatIndex).objectIndex() != -1) {
QTextCharFormat f = newFormat;
f.setObjectIndex(formats.format(initialBlockCharFormatIndex).objectIndex());
initialBlockCharFormatIndex = formats.indexForFormat(f);
} else {
initialBlockCharFormatIndex = newFormatIdx;
}
++pos;
--length;
}
const int startPos = pos;
const int endPos = pos + length;
split(startPos);
split(endPos);
while (pos < endPos) {
FragmentMap::Iterator it = fragments.find(pos);
Q_ASSERT(!it.atEnd());
QTextFragmentData *fragment = it.value();
Q_ASSERT(formats.format(fragment->format).type() == QTextFormat::CharFormat);
int offset = pos - it.position();
int length = qMin(endPos - pos, int(fragment->size - offset));
int oldFormat = fragment->format;
if (mode == MergeFormat) {
QTextFormat format = formats.format(fragment->format);
format.merge(newFormat);
fragment->format = formats.indexForFormat(format);
} else if (mode == SetFormatAndPreserveObjectIndices
&& formats.format(oldFormat).objectIndex() != -1) {
QTextCharFormat f = newFormat;
f.setObjectIndex(formats.format(oldFormat).objectIndex());
fragment->format = formats.indexForFormat(f);
} else {
fragment->format = newFormatIdx;
}
QTextUndoCommand c = { QTextUndoCommand::CharFormatChanged, true, QTextUndoCommand::MoveCursor, oldFormat,
0, pos, { length }, 0 };
appendUndoItem(c);
pos += length;
Q_ASSERT(pos == (int)(it.position() + fragment->size) || pos >= endPos);
}
int n = fragments.findNode(startPos - 1);
if (n)
unite(n);
n = fragments.findNode(endPos);
if (n)
unite(n);
QTextBlock blockIt = blocksFind(startPos);
QTextBlock endIt = blocksFind(endPos);
if (endIt.isValid())
endIt = endIt.next();
for (; blockIt.isValid() && blockIt != endIt; blockIt = blockIt.next())
QTextDocumentPrivate::block(blockIt)->invalidate();
documentChange(startPos, length);
endEditBlock();
}