本文整理汇总了C++中QTextTable::columns方法的典型用法代码示例。如果您正苦于以下问题:C++ QTextTable::columns方法的具体用法?C++ QTextTable::columns怎么用?C++ QTextTable::columns使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QTextTable
的用法示例。
在下文中一共展示了QTextTable::columns方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: showTable
void MainWindow::showTable()
{
QTextCursor cursor = editor->textCursor();
QTextTable *table = cursor.currentTable();
if (!table)
return;
QTableWidget *tableWidget = new QTableWidget(table->rows(), table->columns());
//! [9]
for (int row = 0; row < table->rows(); ++row) {
for (int column = 0; column < table->columns(); ++column) {
QTextTableCell tableCell = table->cellAt(row, column);
//! [9]
QTextFrame::iterator it;
QString text;
for (it = tableCell.begin(); !(it.atEnd()); ++it) {
QTextBlock childBlock = it.currentBlock();
if (childBlock.isValid())
text += childBlock.text();
}
QTableWidgetItem *newItem = new QTableWidgetItem(text);
tableWidget->setItem(row, column, newItem);
/*
//! [10]
processTableCell(tableCell);
//! [10]
*/
//! [11]
}
//! [11] //! [12]
}
//! [12]
tableWidget->setWindowTitle(tr("Table Contents"));
tableWidget->show();
}
示例2: addFrameDecorations
void QQuickTextNodeEngine::addFrameDecorations(QTextDocument *document, QTextFrame *frame)
{
QTextDocumentLayout *documentLayout = qobject_cast<QTextDocumentLayout *>(document->documentLayout());
QTextFrameFormat frameFormat = frame->format().toFrameFormat();
QTextTable *table = qobject_cast<QTextTable *>(frame);
QRectF boundingRect = table == 0
? documentLayout->frameBoundingRect(frame)
: documentLayout->tableBoundingRect(table);
QBrush bg = frame->frameFormat().background();
if (bg.style() != Qt::NoBrush)
m_backgrounds.append(qMakePair(boundingRect, bg.color()));
if (!frameFormat.hasProperty(QTextFormat::FrameBorder))
return;
qreal borderWidth = frameFormat.border();
if (qFuzzyIsNull(borderWidth))
return;
QBrush borderBrush = frameFormat.borderBrush();
QTextFrameFormat::BorderStyle borderStyle = frameFormat.borderStyle();
if (borderStyle == QTextFrameFormat::BorderStyle_None)
return;
addBorder(boundingRect.adjusted(frameFormat.leftMargin(), frameFormat.topMargin(),
-frameFormat.rightMargin(), -frameFormat.bottomMargin()),
borderWidth, borderStyle, borderBrush);
if (table != 0) {
int rows = table->rows();
int columns = table->columns();
for (int row=0; row<rows; ++row) {
for (int column=0; column<columns; ++column) {
QTextTableCell cell = table->cellAt(row, column);
QRectF cellRect = documentLayout->tableCellBoundingRect(table, cell);
addBorder(cellRect.adjusted(-borderWidth, -borderWidth, 0, 0), borderWidth,
borderStyle, borderBrush);
}
}
}
}
示例3: testTableDelete
void TestChangeTrackedDelete::testTableDelete()
{
TextTool *textTool = new TextTool(new MockCanvas);
KoTextEditor *textEditor = textTool->textEditor();
QVERIFY(textEditor);
QTextDocument *document = textEditor->document();
KTextDocumentLayout *layout = qobject_cast<KTextDocumentLayout*>(document->documentLayout());
QTextCursor *cursor = textEditor->cursor();
insertSampleTable(document);
cursor->setPosition(13);
cursor->setPosition(102, QTextCursor::KeepAnchor);
ChangeTrackedDeleteCommand *delCommand = new ChangeTrackedDeleteCommand(ChangeTrackedDeleteCommand::NextChar, textTool);
textEditor->addCommand(delCommand);
QCOMPARE(document->characterAt(13).unicode(), (ushort)(QChar::ObjectReplacementCharacter));
// This is wierd. Without this loop present the succeeding call to inlineTextObject returs NULL. Why ??????
for (int i=0; i<document->characterCount(); i++) {
cursor->setPosition(i);
}
cursor->setPosition(14);
KDeleteChangeMarker *testMarker = dynamic_cast<KDeleteChangeMarker*>(layout->inlineTextObjectManager()->inlineTextObject(*cursor));
QTextDocumentFragment deleteData = KTextDocument(document).changeTracker()->elementById(testMarker->changeId())->deleteData();
QTextDocument deleteDocument;
QTextCursor deleteCursor(&deleteDocument);
deleteCursor.insertFragment(deleteData);
bool tableFound = false;
for (int i=0; i < deleteDocument.characterCount(); i++) {
deleteCursor.setPosition(i);
if (deleteCursor.currentTable()) {
tableFound = true;
break;
}
}
QVERIFY(tableFound == true);
QTextTable *table = deleteCursor.currentTable();
QVERIFY(table->rows() == 3);
QVERIFY(table->columns() == 3);
tableFound = false;
for (int i=0; i < document->characterCount(); i++) {
deleteCursor.setPosition(i);
if (deleteCursor.currentTable()) {
tableFound = true;
break;
}
}
QVERIFY(tableFound == false);
delCommand->undo();
tableFound = false;
for (int i=0; i < document->characterCount(); i++) {
deleteCursor.setPosition(i);
if (deleteCursor.currentTable()) {
tableFound = true;
break;
}
}
QVERIFY(tableFound == true);
delete textTool;
}
示例4: render
bool KoReportODTRenderer::render(const KoReportRendererContext& context, ORODocument* document, int /*page*/)
{
QTextTableFormat tableFormat;
tableFormat.setCellPadding(5);
tableFormat.setHeaderRowCount(1);
tableFormat.setBorderStyle(QTextFrameFormat::BorderStyle_Solid);
tableFormat.setWidth(QTextLength(QTextLength::PercentageLength, 100));
QTextTable *table = m_cursor.insertTable(1, 1, tableFormat);
long renderedSections = 0;
for (long s = 0; s < document->sections(); s++) {
OROSection *section = document->section(s);
section->sortPrimatives(OROSection::SortX);
if (section->type() == KRSectionData::GroupHeader || section->type() == KRSectionData::GroupFooter ||
section->type() == KRSectionData::ReportHeader || section->type() == KRSectionData::ReportFooter ||
section->type() == KRSectionData::Detail){
//Add this section to the document
//Resize the table to accommodate all the primitives in the section
if (table->columns() < section->primitives()) {
table->appendColumns(section->primitives() - table->columns());
}
if (renderedSections > 0) {
//We need to back a row, then forward a row to get at the start cell
m_cursor.movePosition(QTextCursor::PreviousRow);
m_cursor.movePosition(QTextCursor::NextRow);
} else {
//On the first row, ensure we are in the first cell after expanding the table
while (m_cursor.movePosition(QTextCursor::PreviousCell)){}
}
//Render the objects in each section
for (int i = 0; i < section->primitives(); i++) {
//Colour the cell using hte section background colour
OROPrimitive * prim = section->primitive(i);
QTextTableCell cell = table->cellAt(m_cursor);
QTextCharFormat format = cell.format();
format.setBackground(section->backgroundColor());
cell.setFormat(format);
if (prim->type() == OROTextBox::TextBox) {
OROTextBox * tb = (OROTextBox*) prim;
m_cursor.insertText(tb->text());
} else if (prim->type() == OROImage::Image) {
OROImage * im = (OROImage*) prim;
m_cursor.insertImage(im->image().scaled(im->size().width(), im->size().height(), Qt::KeepAspectRatio));
} else if (prim->type() == OROPicture::Picture) {
OROPicture * im = (OROPicture*) prim;
QImage image(im->size().toSize(), QImage::Format_RGB32);
QPainter painter(&image);
im->picture()->play(&painter);
m_cursor.insertImage(image);
} else {
kWarning() << "unhandled primitive type";
}
m_cursor.movePosition(QTextCursor::NextCell);
}
if (s < document->sections() - 1) {
table->appendRows(1);
}
renderedSections++;
}
}
QTextDocumentWriter writer(context.destinationUrl.toLocalFile());
return writer.write(m_document);
}
示例5: write
void KoTextWriter::write(const QTextDocument *document, int from, int to)
{
d->document = const_cast<QTextDocument*>(document);
d->styleManager = KoTextDocument(document).styleManager();
QTextBlock fromblock = document->findBlock(from);
QTextBlock toblock = document->findBlock(to);
QTextCursor fromcursor(fromblock);
QTextTable *currentTable = fromcursor.currentTable();
QTextList *currentList = fromcursor.currentList();
// NOTE even better would be if we create a new table/list out of multiple selected
// tablecells/listitems that contain only the selected cells/items. But following
// at least enables copying a whole list/table while still being able to copy/paste
// only parts of the text within a list/table (see also bug 275990).
if (currentTable || currentList) {
if (from == 0 && to < 0) {
// save everything means also save current table and list
currentTable = 0;
currentList = 0;
} else {
QTextCursor tocursor(toblock);
//fromcursor.setPosition(from, QTextCursor::KeepAnchor);
tocursor.setPosition(to, QTextCursor::KeepAnchor);
if (!fromcursor.movePosition(QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor)) {
fromcursor = QTextCursor();
}
if (!tocursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor)) {
tocursor = QTextCursor();
}
// save the whole table if all cells are selected
if (currentTable) {
QTextTableCell fromcell = currentTable->cellAt(from);
QTextTableCell tocell = currentTable->cellAt(to);
if ((fromcursor.isNull() || fromcursor.currentTable() != currentTable) &&
(tocursor.isNull() || tocursor.currentTable() != currentTable) &&
fromcell.column() == 0 && fromcell.row() == 0 &&
tocell.column() == currentTable->columns()-1 && tocell.row() == currentTable->rows()-1
) {
currentTable = 0;
}
}
// save the whole list if all list-items are selected
if (currentList) {
int fromindex = currentList->itemNumber(fromblock);
int toindex = currentList->itemNumber(toblock);
if ((fromcursor.isNull() || fromcursor.currentList() != currentList) &&
(tocursor.isNull() || tocursor.currentList() != currentList) &&
fromindex <= 0 && (toindex < 0 || toindex == currentList->count()-1)
) {
currentList = 0;
}
}
}
}
QHash<QTextList *, QString> listStyles = d->saveListStyles(fromblock, to);
d->globalFrom = from;
d->globalTo = to;
d->writeBlocks(const_cast<QTextDocument *>(document), from, to, listStyles, currentTable, currentList);
}