本文整理汇总了C++中QTextFrame::lastCursorPosition方法的典型用法代码示例。如果您正苦于以下问题:C++ QTextFrame::lastCursorPosition方法的具体用法?C++ QTextFrame::lastCursorPosition怎么用?C++ QTextFrame::lastCursorPosition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QTextFrame
的用法示例。
在下文中一共展示了QTextFrame::lastCursorPosition方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: operator
void operator()( const pugi::xpath_node& node, QTextFrame * pframe = 0, int level = 0 ) const {
QTextCursor cursor = edit.textCursor();
if ( pframe )
cursor = pframe->lastCursorPosition();
cursor.insertText( tagString( node ), tagFormat ); // <----------- <tag>
auto frame = cursor.insertFrame( frameFormat ); // <-------------- insert frame
QObject::connect( frame, &QTextFrame::destroyed, &edit, &docEdit::handleBlockDeleted );
// body
if ( std::strcmp( node.node().name(), "title" ) == 0 ) {
cursor.insertText( QString::fromStdString( node.node().text().get() ), headingFormat );
}
else if ( std::strcmp( node.node().name(), "paragraph" ) == 0 ) {
cursor.insertText( QString::fromStdString( node.node().text().get() ), paragraphFormat );
}
else {
cursor.insertText( QString::fromStdString( node.node().text().get() ), plainFormat );
}
// process childlen
for ( auto& child : node.node().select_nodes( "./*" ) ) {
(*this)(child, frame, level + 1);
}
cursor = pframe ? pframe->lastCursorPosition() : mainFrame->lastCursorPosition();
cursor.insertText( QString( "</%1>" ).arg( node.node().name() ), tagFormat ); // </tag>
}
示例2: cursor
MainWindow::MainWindow()
{
QMenu *fileMenu = new QMenu(tr("&File"));
QAction *saveAction = fileMenu->addAction(tr("&Save..."));
saveAction->setShortcut(tr("Ctrl+S"));
QAction *quitAction = fileMenu->addAction(tr("E&xit"));
quitAction->setShortcut(tr("Ctrl+Q"));
menuBar()->addMenu(fileMenu);
editor = new QTextEdit();
QTextCursor cursor(editor->textCursor());
cursor.movePosition(QTextCursor::Start);
QTextFrame *mainFrame = cursor.currentFrame();
QTextCharFormat plainCharFormat;
QTextCharFormat boldCharFormat;
boldCharFormat.setFontWeight(QFont::Bold);
/* main frame
//! [0]
QTextFrame *mainFrame = cursor.currentFrame();
cursor.insertText(...);
//! [0]
*/
cursor.insertText("Text documents are represented by the "
"QTextDocument class, rather than by QString objects. "
"Each QTextDocument object contains information about "
"the document's internal representation, its structure, "
"and keeps track of modifications to provide undo/redo "
"facilities. This approach allows features such as the "
"layout management to be delegated to specialized "
"classes, but also provides a focus for the framework.",
plainCharFormat);
//! [1]
QTextFrameFormat frameFormat;
frameFormat.setMargin(32);
frameFormat.setPadding(8);
frameFormat.setBorder(4);
//! [1]
cursor.insertFrame(frameFormat);
/* insert frame
//! [2]
cursor.insertFrame(frameFormat);
cursor.insertText(...);
//! [2]
*/
cursor.insertText("Documents are either converted from external sources "
"or created from scratch using Qt. The creation process "
"can done by an editor widget, such as QTextEdit, or by "
"explicit calls to the Scribe API.", boldCharFormat);
cursor = mainFrame->lastCursorPosition();
/* last cursor
//! [3]
cursor = mainFrame->lastCursorPosition();
cursor.insertText(...);
//! [3]
*/
cursor.insertText("There are two complementary ways to visualize the "
"contents of a document: as a linear buffer that is "
"used by editors to modify the contents, and as an "
"object hierarchy containing structural information "
"that is useful to layout engines. In the hierarchical "
"model, the objects generally correspond to visual "
"elements such as frames, tables, and lists. At a lower "
"level, these elements describe properties such as the "
"style of text used and its alignment. The linear "
"representation of the document is used for editing and "
"manipulation of the document's contents.",
plainCharFormat);
connect(saveAction, SIGNAL(triggered()), this, SLOT(saveFile()));
connect(quitAction, SIGNAL(triggered()), this, SLOT(close()));
setCentralWidget(editor);
setWindowTitle(tr("Text Document Frames"));
}
示例3: parseFrame
void Format::parseFrame( QTextCursor &cursor, const QDomElement &element )
{
QTextBlock extraBlock;
bool hasExtraBlock = false;
QDomNode n;
for( n = element.firstChild(); !n.isNull(); n = n.nextSibling() ) {
QDomElement e = n.toElement();
if ( e.tagName() == "block" ) {
if ( e.hasAttribute( "liststyle" ) ) {
cursor.setCharFormat( TextFormats::normalCharFormat() );
QTextListFormat f;
f.setIndent( e.attribute( "listindent" ).toInt() );
if ( e.attribute( "liststyle" ) == "decimal" ) {
f.setStyle( QTextListFormat::ListDecimal );
} else {
f.setStyle( QTextListFormat::ListDisc );
}
cursor.mergeBlockFormat( TextFormats::normalBlockFormat() );
cursor.insertList( f );
} else if ( n != element.firstChild() ) {
QTextBlockFormat f;
if ( e.hasAttribute( "blockindent" ) ) {
f.setIndent( e.attribute( "blockindent" ).toInt() );
} else {
f.setIndent( 0 );
}
if ( hasExtraBlock ) {
QTextCursor c( extraBlock );
c.setBlockFormat( f );
hasExtraBlock = false;
} else {
cursor.insertBlock( f );
}
}
if ( e.hasAttribute( "lastmodified" ) ) {
QString str = e.attribute( "lastmodified" );
QDateTime dt = QDateTime::fromString( str, Qt::ISODate );
TextFormats::setLastModified( cursor, dt );
}
parseBlock( cursor, e );
if ( e.hasAttribute( "titlestyle" ) ) {
if ( e.attribute( "titlestyle" ) == "title" ) {
cursor.mergeBlockFormat( TextFormats::titleBlockFormat() );
} else if ( e.attribute( "titlestyle" ) == "subtitle" ) {
cursor.mergeBlockFormat( TextFormats::subTitleBlockFormat() );
}
} else {
cursor.mergeBlockFormat( TextFormats::normalBlockFormat() );
}
} else if ( e.tagName() == "frame" ) {
QTextFrame *parentFrame = cursor.currentFrame();
QTextFrame *frame = cursor.insertFrame( TextFormats::codeFrameFormat() );
parseFrame( cursor, e );
if ( e.attribute( "type" ) == "code" ) {
TextFormats::setCodeFrameFormats( frame );
}
cursor = parentFrame->lastCursorPosition();
extraBlock = cursor.block();
hasExtraBlock = true;
}
}
}
示例4: createPages
void KWQTableView::createPages(QPrinter *printer, QTextDocument *textDoc, bool sendToPrinter)
{
printer->setFullPage(true);
int myDpi = printer->logicalDpiY();
if (Prefs::printStyle() == Prefs::EnumPrintStyle::Flashcard) {
printer->setOrientation(QPrinter::Landscape);
int cardWidth = qRound(5 * qreal(myDpi));
int cardHeight = qRound(3 * qreal(myDpi));
QTextTable *table = textDoc->rootFrame()->lastCursorPosition().insertTable(model()->rowCount(), 2);
QTextTableFormat tableFormat = table->format();
tableFormat.setHeaderRowCount(0);
tableFormat.setBorderStyle(QTextFrameFormat::BorderStyle_None);
tableFormat.setCellSpacing(0);
tableFormat.setCellPadding(0);
QVector<QTextLength> constraints;
constraints.append(QTextLength(QTextLength::FixedLength, cardWidth));
constraints.append(QTextLength(QTextLength::FixedLength, cardWidth));
tableFormat.setColumnWidthConstraints(constraints);
table->setFormat(tableFormat);
QTextBlockFormat headerFormat;
headerFormat.setAlignment(Qt::AlignLeft);
QTextCharFormat headerCharFormat;
headerCharFormat.setFont(QFontDatabase::systemFont(QFontDatabase::GeneralFont));
QTextBlockFormat cellFormat;
cellFormat.setAlignment(Qt::AlignCenter);
QTextCharFormat cellCharFormat;
cellCharFormat.setFont(Prefs::editorFont());
QTextFrameFormat cardFormat;
cardFormat.setBorder(1);
cardFormat.setBorderStyle(QTextFrameFormat::BorderStyle_Solid);
cardFormat.setBorderBrush(QBrush(Qt::black));
cardFormat.setWidth(QTextLength(QTextLength::FixedLength, cardWidth));
cardFormat.setHeight(QTextLength(QTextLength::FixedLength, cardHeight));
cardFormat.setPadding(qRound(0.25 * myDpi));
QTextFrameFormat lineFormat;
lineFormat.setBorder(1);
lineFormat.setBorderStyle(QTextFrameFormat::BorderStyle_Solid);
lineFormat.setBorderBrush(QBrush(Qt::black));
lineFormat.setWidth(QTextLength(QTextLength::FixedLength, qRound(4.5 * myDpi)));
lineFormat.setHeight(1.1); //1 is drawn as a box whereas this is drawn as a line. Strange...
lineFormat.setPadding(0);
QTextFrame *card;
for (int i = 0; i < model()->rowCount(); i++) {
for (int j = 0; j < model()->columnCount(); j++) {
cardFormat.setPosition(QTextFrameFormat::FloatLeft);
card = table->cellAt(i, j).firstCursorPosition().insertFrame(cardFormat);
card->lastCursorPosition().insertText(model()->headerData(j, Qt::Horizontal, Qt::DisplayRole).toString(), headerCharFormat);
card->lastCursorPosition().insertFrame(lineFormat);
card->lastCursorPosition().insertBlock();
card->lastCursorPosition().insertBlock();
card->lastCursorPosition().insertBlock(cellFormat, cellCharFormat);
card->lastCursorPosition().insertText(model()->data(model()->index(i, j)).toString(), cellCharFormat);
}
}
}
else
{
textDoc->rootFrame()->lastCursorPosition().insertText(QStringLiteral("kwordquiz %1").arg(KWQ_VERSION));
if (Prefs::printStyle() == Prefs::EnumPrintStyle::Exam)
textDoc->rootFrame()->lastCursorPosition().insertText(' ' + i18n("Name:_____________________________ Date:__________"));
QTextTable* table;
if (Prefs::printStyle() == Prefs::EnumPrintStyle::Exam)
table = textDoc->rootFrame()->lastCursorPosition().insertTable(model()->rowCount() + 1, model()->columnCount() + 2);
else
table = textDoc->rootFrame()->lastCursorPosition().insertTable(model()->rowCount() + 1, model()->columnCount() + 1);
QTextTableFormat tableFormat = table->format();
tableFormat.setHeaderRowCount(1);
tableFormat.setBorder(1);
tableFormat.setBorderStyle(QTextFrameFormat::BorderStyle_Solid);
tableFormat.setCellSpacing(0);
tableFormat.setBorderBrush(QBrush(Qt::black));
tableFormat.setCellPadding(2);
QVector<QTextLength> constraints;
constraints.append(QTextLength(QTextLength::FixedLength, verticalHeader()->width()));
constraints.append(QTextLength(QTextLength::FixedLength, columnWidth(0)));
constraints.append(QTextLength(QTextLength::FixedLength, columnWidth(1)));
if (Prefs::printStyle() == Prefs::EnumPrintStyle::Exam)
constraints.append(QTextLength(QTextLength::FixedLength, 50));
tableFormat.setColumnWidthConstraints(constraints);
table->setFormat(tableFormat);
QTextBlockFormat headerFormat;
//.........这里部分代码省略.........