本文整理汇总了C++中QTextTableFormat类的典型用法代码示例。如果您正苦于以下问题:C++ QTextTableFormat类的具体用法?C++ QTextTableFormat怎么用?C++ QTextTableFormat使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了QTextTableFormat类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: insertRows
/*!
\fn void QTextTable::insertColumns(int index, int columns)
Inserts a number of \a columns before the column with the specified \a index.
\sa insertRows(), resize(), removeRows(), removeColumns(), appendRows(), appendColumns()
*/
void QTextTable::insertColumns(int pos, int num)
{
Q_D(QTextTable);
if (num <= 0)
return;
if (d->dirty)
d->update();
if (pos > d->nCols || pos < 0)
pos = d->nCols;
// qDebug() << "-------- insertCols" << pos << num;
QTextDocumentPrivate *p = d->pieceTable;
QTextFormatCollection *c = p->formatCollection();
p->beginEditBlock();
QList<int> extendedSpans;
for (int i = 0; i < d->nRows; ++i) {
int cell;
if (i == d->nRows - 1 && pos == d->nCols) {
cell = d->fragment_end;
} else {
int logicalGridIndexBeforePosition = pos > 0
? d->findCellIndex(d->grid[i*d->nCols + pos - 1])
: -1;
// Search for the logical insertion point by skipping past cells which are not the first
// cell in a rowspan. This means any cell for which the logical grid index is
// less than the logical cell index of the cell before the insertion.
int logicalGridIndex;
int gridArrayOffset = i*d->nCols + pos;
do {
cell = d->grid[gridArrayOffset];
logicalGridIndex = d->findCellIndex(cell);
gridArrayOffset++;
} while (logicalGridIndex < logicalGridIndexBeforePosition
&& gridArrayOffset < d->nRows*d->nCols);
if (logicalGridIndex < logicalGridIndexBeforePosition
&& gridArrayOffset == d->nRows*d->nCols)
cell = d->fragment_end;
}
if (pos > 0 && pos < d->nCols && cell == d->grid[i*d->nCols + pos - 1]) {
// cell spans the insertion place, extend it
if (!extendedSpans.contains(cell)) {
QTextDocumentPrivate::FragmentIterator it(&p->fragmentMap(), cell);
QTextCharFormat fmt = c->charFormat(it->format);
fmt.setTableCellColumnSpan(fmt.tableCellColumnSpan() + num);
p->setCharFormat(it.position(), 1, fmt);
d->dirty = true;
extendedSpans << cell;
}
} else {
/* If the next cell is spanned from the row above, we need to find the right position
to insert to */
if (i > 0 && pos < d->nCols && cell == d->grid[(i-1) * d->nCols + pos]) {
int gridIndex = i*d->nCols + pos;
const int gridEnd = d->nRows * d->nCols - 1;
while (gridIndex < gridEnd && cell == d->grid[gridIndex]) {
++gridIndex;
}
if (gridIndex == gridEnd)
cell = d->fragment_end;
else
cell = d->grid[gridIndex];
}
QTextDocumentPrivate::FragmentIterator it(&p->fragmentMap(), cell);
QTextCharFormat fmt = c->charFormat(it->format);
fmt.setTableCellRowSpan(1);
fmt.setTableCellColumnSpan(1);
Q_ASSERT(fmt.objectIndex() == objectIndex());
int position = it.position();
int cfmt = p->formatCollection()->indexForFormat(fmt);
int bfmt = p->formatCollection()->indexForFormat(QTextBlockFormat());
for (int i = 0; i < num; ++i)
p->insertBlock(QTextBeginningOfFrame, position, bfmt, cfmt, QTextUndoCommand::MoveCursor);
}
}
QTextTableFormat tfmt = format();
tfmt.setColumns(tfmt.columns()+num);
QVector<QTextLength> columnWidths = tfmt.columnWidthConstraints();
if (! columnWidths.isEmpty()) {
for (int i = num; i > 0; --i)
columnWidths.insert(pos, columnWidths[qMax(0, pos-1)]);
}
tfmt.setColumnWidthConstraints (columnWidths);
QTextObject::setFormat(tfmt);
// qDebug() << "-------- end insertCols" << pos << num;
p->endEditBlock();
//.........这里部分代码省略.........
示例2: QDialog
/** "Help message" or "About" dialog box */
HelpMessageDialog::HelpMessageDialog(QWidget *parent, HelpMode helpMode) :
QDialog(parent),
ui(new Ui::HelpMessageDialog)
{
ui->setupUi(this);
QString version = tr("Terracoin Core") + " " + tr("version") + " " + QString::fromStdString(FormatFullVersion());
/* On x86 add a bit specifier to the version so that users can distinguish between
* 32 and 64 bit builds. On other architectures, 32/64 bit may be more ambigious.
*/
#if defined(__x86_64__)
version += " " + tr("(%1-bit)").arg(64);
#elif defined(__i386__ )
version += " " + tr("(%1-bit)").arg(32);
#endif
if (helpMode == about)
{
setWindowTitle(tr("About Terracoin Core"));
/// HTML-format the license message from the core
QString licenseInfo = QString::fromStdString(LicenseInfo());
QString licenseInfoHTML = licenseInfo;
// Make URLs clickable
QRegExp uri("<(.*)>", Qt::CaseSensitive, QRegExp::RegExp2);
uri.setMinimal(true); // use non-greedy matching
licenseInfoHTML.replace(uri, "<a href=\"\\1\">\\1</a>");
// Replace newlines with HTML breaks
licenseInfoHTML.replace("\n\n", "<br><br>");
ui->aboutMessage->setTextFormat(Qt::RichText);
ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
text = version + "\n" + licenseInfo;
ui->aboutMessage->setText(version + "<br><br>" + licenseInfoHTML);
ui->aboutMessage->setWordWrap(true);
ui->helpMessage->setVisible(false);
} else if (helpMode == cmdline) {
setWindowTitle(tr("Command-line options"));
QString header = tr("Usage:") + "\n" +
" terracoin-qt [" + tr("command-line options") + "] " + "\n";
QTextCursor cursor(ui->helpMessage->document());
cursor.insertText(version);
cursor.insertBlock();
cursor.insertText(header);
cursor.insertBlock();
std::string strUsage = HelpMessage(HMM_BITCOIN_QT);
const bool showDebug = GetBoolArg("-help-debug", false);
strUsage += HelpMessageGroup(tr("UI Options:").toStdString());
if (showDebug) {
strUsage += HelpMessageOpt("-allowselfsignedrootcertificates", strprintf("Allow self signed root certificates (default: %u)", DEFAULT_SELFSIGNED_ROOTCERTS));
}
strUsage += HelpMessageOpt("-choosedatadir", strprintf(tr("Choose data directory on startup (default: %u)").toStdString(), DEFAULT_CHOOSE_DATADIR));
strUsage += HelpMessageOpt("-lang=<lang>", tr("Set language, for example \"de_DE\" (default: system locale)").toStdString());
strUsage += HelpMessageOpt("-min", tr("Start minimized").toStdString());
strUsage += HelpMessageOpt("-rootcertificates=<file>", tr("Set SSL root certificates for payment request (default: -system-)").toStdString());
strUsage += HelpMessageOpt("-splash", strprintf(tr("Show splash screen on startup (default: %u)").toStdString(), DEFAULT_SPLASHSCREEN));
strUsage += HelpMessageOpt("-resetguisettings", tr("Reset all settings changed in the GUI").toStdString());
if (showDebug) {
strUsage += HelpMessageOpt("-uiplatform", strprintf("Select platform to customize UI for (one of windows, macosx, other; default: %s)", BitcoinGUI::DEFAULT_UIPLATFORM));
}
QString coreOptions = QString::fromStdString(strUsage);
text = version + "\n" + header + "\n" + coreOptions;
QTextTableFormat tf;
tf.setBorderStyle(QTextFrameFormat::BorderStyle_None);
tf.setCellPadding(2);
QVector<QTextLength> widths;
widths << QTextLength(QTextLength::PercentageLength, 35);
widths << QTextLength(QTextLength::PercentageLength, 65);
tf.setColumnWidthConstraints(widths);
QTextCharFormat bold;
bold.setFontWeight(QFont::Bold);
Q_FOREACH (const QString &line, coreOptions.split("\n")) {
if (line.startsWith(" -"))
{
cursor.currentTable()->appendRows(1);
cursor.movePosition(QTextCursor::PreviousCell);
cursor.movePosition(QTextCursor::NextRow);
cursor.insertText(line.trimmed());
cursor.movePosition(QTextCursor::NextCell);
} else if (line.startsWith(" ")) {
cursor.insertText(line.trimmed()+' ');
} else if (line.size() > 0) {
//Title of a group
if (cursor.currentTable())
cursor.currentTable()->appendRows(1);
cursor.movePosition(QTextCursor::Down);
cursor.insertText(line.trimmed(), bold);
cursor.insertTable(1, 2, tf);
}
}
ui->helpMessage->moveCursor(QTextCursor::Start);
ui->scrollArea->setVisible(false);
ui->aboutLogo->setVisible(false);
//.........这里部分代码省略.........
示例3: dw
void CalcFrame::printCalc()
{
const auto milkReception = m_mainWindow->database()->milkReception();
if (!milkReception) {
Utils::Main::showMsgIfDbNotChoosed(this);
return;
}
DataWorker dw(m_mainWindow->database());
try {
dw.loadMilkReceptions(getWhereQuery());
} catch (const QString &err) {
QMessageBox::critical(this, tr("Расчеты"), tr("Произошла ошибка во время подгрузки данных: ") + err);
}
const auto deliverers = dw.getDeliverers().values();
if (deliverers.isEmpty())
{
QMessageBox::information(this, tr("Печать"), tr("Отсутствуют данные для печати"));
return;
}
const char f = 'f';
int row = 0;
const auto settings = m_mainWindow->getSettings();
const auto printColumns = m_mainWindow->getSettings()->getPrint().columns;
QStringList columns;
for (int i = 0; i < printColumns.size(); ++i) {
const auto &col = printColumns[i];
if (col.isShow)
columns.append(printColumns[i].display);
}
const int columnsCount = columns.size();
if (columnsCount <= 0) {
QMessageBox::information(this, tr("Печать сдачи молока"), tr("Не выбрана ни одна колонка для печати"));
return;
}
const Settings::Column snCol = printColumns[Constants::PrintColumns::SerialNumber],
delivNameCol = printColumns[Constants::PrintColumns::DeliverersName],
litersCol = printColumns[Constants::PrintColumns::Liters],
fatCol = printColumns[Constants::PrintColumns::Fat],
proteinCol = printColumns[Constants::PrintColumns::Protein],
fatUnitsCol = printColumns[Constants::PrintColumns::FatUnits],
rankWeightCol = printColumns[Constants::PrintColumns::RankWeight],
payCol = printColumns[Constants::PrintColumns::PayWithOutPrem],
permiumCol = printColumns[Constants::PrintColumns::Premium],
sumCol = printColumns[Constants::PrintColumns::Sum],
signCol = printColumns[Constants::PrintColumns::Sign];
auto itemToPrintRow = [&](const QString &delivName, const CalculatedItem::Data &item,
const int rowPos = -1) -> QStringList
{
QStringList row;
if (snCol.isShow)
row.append(rowPos >= 0 ? QString::number(rowPos) : QString());
if (delivNameCol.isShow)
row.append(delivName);
if (litersCol.isShow)
row.append(QString::number(item.liters, f, litersCol.prec));
if (fatCol.isShow)
row.append(QString::number(item.fat, f, fatCol.prec));
if (proteinCol.isShow)
row.append(QString::number(item.protein, f, proteinCol.prec));
if (fatUnitsCol.isShow)
row.append(QString::number(item.fatUnits, f, fatCol.prec));
if (rankWeightCol.isShow)
row.append(QString::number(item.rankWeight, f, rankWeightCol.prec));
if (payCol.isShow)
row.append(QString::number(item.paymentWithOutPremium, f, payCol.prec));
if (permiumCol.isShow)
row.append(QString::number(item.premiumForFat, f, permiumCol.prec));
if (sumCol.isShow)
row.append(QString::number(floor(item.sum), f, sumCol.prec));
if (signCol.isShow)
row.append(QString());
return row;
};
const auto &printSettings = settings->getPrint();
QTextTableFormat tableFormat;
tableFormat.setBorder(printSettings.tableBorderWidth);
tableFormat.setBorderStyle(static_cast<QTextFrameFormat::BorderStyle>(printSettings.tableBorderStyle));
tableFormat.setColumns(columnsCount);
tableFormat.setAlignment(Qt::AlignHCenter);
tableFormat.setWidth(QTextLength(QTextLength::VariableLength, 100));
tableFormat.setBorderBrush(QBrush(printSettings.tableBorderColor));
tableFormat.setCellSpacing(printSettings.cellSpacing);
tableFormat.setCellPadding(printSettings.cellPadding);
PrintTable print(columnsCount, tableFormat);
{
auto &textFormat = print.getTableBodyTextFormat();
textFormat.setFont(printSettings.tableTextFont);
textFormat.setForeground(QBrush(printSettings.tableTextColor));
//.........这里部分代码省略.........
示例4: copy
void QTextCopyHelper::copy()
{
if (cursor.hasComplexSelection()) {
QTextTable *table = cursor.currentTable();
int row_start, col_start, num_rows, num_cols;
cursor.selectedTableCells(&row_start, &num_rows, &col_start, &num_cols);
QTextTableFormat tableFormat = table->format();
tableFormat.setColumns(num_cols);
tableFormat.clearColumnWidthConstraints();
const int objectIndex = dst->formatCollection()->createObjectIndex(tableFormat);
Q_ASSERT(row_start != -1);
for (int r = row_start; r < row_start + num_rows; ++r) {
for (int c = col_start; c < col_start + num_cols; ++c) {
QTextTableCell cell = table->cellAt(r, c);
const int rspan = cell.rowSpan();
const int cspan = cell.columnSpan();
if (rspan != 1) {
int cr = cell.row();
if (cr != r)
continue;
}
if (cspan != 1) {
int cc = cell.column();
if (cc != c)
continue;
}
// add the QTextBeginningOfFrame
QTextCharFormat cellFormat = cell.format();
if (r + rspan >= row_start + num_rows) {
cellFormat.setTableCellRowSpan(row_start + num_rows - r);
}
if (c + cspan >= col_start + num_cols) {
cellFormat.setTableCellColumnSpan(col_start + num_cols - c);
}
const int charFormatIndex = convertFormatIndex(cellFormat, objectIndex);
int blockIdx = -2;
const int cellPos = cell.firstPosition();
QTextBlock block = src->blocksFind(cellPos);
if (block.position() == cellPos) {
blockIdx = convertFormatIndex(block.blockFormat());
}
dst->insertBlock(QTextBeginningOfFrame, insertPos, blockIdx, charFormatIndex);
++insertPos;
// nothing to add for empty cells
if (cell.lastPosition() > cellPos) {
// add the contents
appendFragments(cellPos, cell.lastPosition());
}
}
}
// add end of table
int end = table->lastPosition();
appendFragment(end, end+1, objectIndex);
} else {
appendFragments(cursor.selectionStart(), cursor.selectionEnd());
}
}
示例5: QString
void DeckListModel::printDeckListNode(QTextCursor *cursor, InnerDecklistNode *node)
{
const int totalColumns = settingsCache->getPriceTagFeature() ? 3 : 2;
if (node->height() == 1) {
QTextBlockFormat blockFormat;
QTextCharFormat charFormat;
charFormat.setFontPointSize(11);
charFormat.setFontWeight(QFont::Bold);
cursor->insertBlock(blockFormat, charFormat);
QString priceStr;
if (settingsCache->getPriceTagFeature())
priceStr = QString().sprintf(": $%.2f", node->recursivePrice(true));
cursor->insertText(QString("%1: %2").arg(node->getVisibleName()).arg(node->recursiveCount(true)).append(priceStr));
QTextTableFormat tableFormat;
tableFormat.setCellPadding(0);
tableFormat.setCellSpacing(0);
tableFormat.setBorder(0);
QTextTable *table = cursor->insertTable(node->size() + 1, totalColumns, tableFormat);
for (int i = 0; i < node->size(); i++) {
AbstractDecklistCardNode *card = dynamic_cast<AbstractDecklistCardNode *>(node->at(i));
QTextCharFormat cellCharFormat;
cellCharFormat.setFontPointSize(9);
QTextTableCell cell = table->cellAt(i, 0);
cell.setFormat(cellCharFormat);
QTextCursor cellCursor = cell.firstCursorPosition();
cellCursor.insertText(QString("%1 ").arg(card->getNumber()));
cell = table->cellAt(i, 1);
cell.setFormat(cellCharFormat);
cellCursor = cell.firstCursorPosition();
cellCursor.insertText(card->getName());
if (settingsCache->getPriceTagFeature()) {
cell = table->cellAt(i, 2);
cell.setFormat(cellCharFormat);
cellCursor = cell.firstCursorPosition();
cellCursor.insertText(QString().sprintf("$%.2f ", card->getTotalPrice()));
}
}
} else if (node->height() == 2) {
QTextBlockFormat blockFormat;
QTextCharFormat charFormat;
charFormat.setFontPointSize(14);
charFormat.setFontWeight(QFont::Bold);
cursor->insertBlock(blockFormat, charFormat);
QString priceStr;
if (settingsCache->getPriceTagFeature())
priceStr = QString().sprintf(": $%.2f", node->recursivePrice(true));
cursor->insertText(QString("%1: %2").arg(node->getVisibleName()).arg(node->recursiveCount(true)).append(priceStr));
QTextTableFormat tableFormat;
tableFormat.setCellPadding(10);
tableFormat.setCellSpacing(0);
tableFormat.setBorder(0);
QVector<QTextLength> constraints;
for (int i = 0; i < totalColumns; i++)
constraints << QTextLength(QTextLength::PercentageLength, 100.0 / totalColumns);
tableFormat.setColumnWidthConstraints(constraints);
QTextTable *table = cursor->insertTable(1, totalColumns, tableFormat);
for (int i = 0; i < node->size(); i++) {
QTextCursor cellCursor = table->cellAt(0, (i * totalColumns) / node->size()).lastCursorPosition();
printDeckListNode(&cellCursor, dynamic_cast<InnerDecklistNode *>(node->at(i)));
}
}
cursor->movePosition(QTextCursor::End);
}
示例6: CalculatePeople
void ResWaReport::BuildPeopleServedSection(QTextCursor& cursor)
{
CalculatePeople();
cursor.movePosition(QTextCursor::End);
cursor.insertBlock();
cursor.insertText("\n\n5) People Served\n", _headerFormat);
QTextTableFormat tableFormat;
QVector<QTextLength> constraints;
constraints << QTextLength(QTextLength::PercentageLength, 40);
constraints << QTextLength(QTextLength::PercentageLength, 40);
tableFormat.setColumnWidthConstraints(constraints);
cursor.insertText("\nA. # of people served by telephone:\n", _headerFormat);
cursor.insertBlock();
cursor.movePosition(QTextCursor::End);
QTextTable *table = cursor.insertTable(2, 2, tableFormat);
// HEADERS
TextToCell(table, 0, 0, "All People Directly Served", &_tableTextFormat);
TextToCell(table, 1, 0, "Children Directly Served", &_tableTextFormat);
// VALUES
//JAS Per Rosemary's need to match #2 on report
TextToCell(table, 0, 1, QString::number(_numDirectAdult), &_tableCellBlue);
TextToCell(table, 1, 1, QString::number(_numChildByPhone), &_tableCellBlue);
//TextToCell(table, 0, 1, QString::number(_numByPhone), &_tableCellBlue);
//TextToCell(table, 1, 1, QString::number(_numChildByPhone), &_tableCellBlue);
cursor.insertBlock();
cursor.movePosition(QTextCursor::End);
cursor.insertText("\n\nB. # of people served by conflict coaching:\n", _headerFormat);
cursor.insertBlock();
cursor.movePosition(QTextCursor::End);
QTextTable *tableB = cursor.insertTable(2, 2, tableFormat);
// HEADERS
TextToCell(tableB, 0, 0, "All People Directly Served", &_tableTextFormat);
TextToCell(tableB, 1, 0, "Children Directly Served", &_tableTextFormat);
// VALUES
TextToCell(tableB, 0, 1, QString::number(_numByCoaching), &_tableCellBlue);
TextToCell(tableB, 1, 1, QString::number(_numChildByCoaching), &_tableCellBlue);
cursor.insertBlock();
cursor.movePosition(QTextCursor::End);
cursor.insertText("\n\nC.# of people served by telephone concilliation:\n", _headerFormat);
cursor.insertBlock();
cursor.movePosition(QTextCursor::End);
QTextTable *tableC = cursor.insertTable(2, 2, tableFormat);
// HEADERS
TextToCell(tableC, 0, 0, "All People Directly Served", &_tableTextFormat);
TextToCell(tableC, 1, 0, "Children Directly Served", &_tableTextFormat);
// VALUES
TextToCell(tableC, 0, 1, QString::number(_numByPhoneConcilliation), &_tableCellBlue);
TextToCell(tableC, 1, 1, QString::number(_numChildByPhoneConcilliation), &_tableCellBlue);
cursor.insertBlock();
cursor.movePosition(QTextCursor::End);
cursor.insertText("\n\nD. # of people served by mediation sessions:\n", _headerFormat);
cursor.insertBlock();
cursor.movePosition(QTextCursor::End);
QTextTable *tableD = cursor.insertTable(2, 2, tableFormat);
// HEADERS
TextToCell(tableD, 0, 0, "All People Directly Served", &_tableTextFormat);
TextToCell(tableD, 1, 0, "Children Directly Served", &_tableTextFormat);
// VALUES
TextToCell(tableD, 0, 1, QString::number(_numBySessions), &_tableCellBlue);
TextToCell(tableD, 1, 1, QString::number(_numChildBySessions), &_tableCellBlue);
cursor.insertBlock();
cursor.movePosition(QTextCursor::End);
cursor.insertText("\n\nE. # of people served by facilliation sessions:\n", _headerFormat);
cursor.insertBlock();
cursor.movePosition(QTextCursor::End);
QTextTable *tableE = cursor.insertTable(2, 2, tableFormat);
// HEADERS
TextToCell(tableE, 0, 0, "All People Directly Served", &_tableTextFormat);
TextToCell(tableE, 1, 0, "Children Directly Served", &_tableTextFormat);
// VALUES
TextToCell(tableE, 0, 1, QString::number(_numBySessionFacilliation), &_tableCellBlue);
TextToCell(tableE, 1, 1, QString::number(_numChildBySessionFacilliation), &_tableCellBlue);
cursor.insertBlock();
cursor.movePosition(QTextCursor::End);
cursor.insertText("\n\nF. # of people INDIRECTLY served by phone, concilliation, mediation, facilliation:\n", _headerFormat);
cursor.insertBlock();
cursor.movePosition(QTextCursor::End);
QTextTable *tableF = cursor.insertTable(2, 2, tableFormat);
// HEADERS
TextToCell(tableF, 0, 0, "All People Indirectly Served", &_tableTextFormat);
TextToCell(tableF, 1, 0, "Children Indirectly Served", &_tableTextFormat);
// VALUES
TextToCell(tableF, 0, 1, QString::number(_numIndirectly), &_tableCellBlue);
TextToCell(tableF, 1, 1, QString::number(_numChildIndirectly), &_tableCellBlue);
cursor.insertBlock();
cursor.movePosition(QTextCursor::End);
cursor.insertText("\n\nG. # of people served by training and in-service:\n", _headerFormat);
cursor.insertBlock();
//.........这里部分代码省略.........
示例7: cursor
bool PriceListPrinter::printODT( PriceListPrinter::PrintPriceItemsOption printOption,
const QList<int> &fieldsToPrint,
int priceDataSetToPrintInput,
bool printPriceList,
bool printPriceAP,
bool APgroupPrAm,
const QString &fileName,
double pageWidth,
double pageHeight,
Qt::Orientation paperOrientation) {
double borderWidth = 1.0f;
if( m_d->priceList ){
int priceDataSetToPrint = 0;
// controlliamo se il valore di input è corretto
if( priceDataSetToPrintInput >= 0 && priceDataSetToPrintInput < m_d->priceList->priceDataSetCount() ){
priceDataSetToPrint = priceDataSetToPrintInput;
}
QTextDocument doc;
QTextCursor cursor(&doc);
if( paperOrientation == Qt::Horizontal ){
if( pageHeight > pageWidth ){
double com = pageHeight;
pageHeight = pageWidth;
pageWidth = com;
}
} else {
if( pageHeight < pageWidth ){
double com = pageHeight;
pageHeight = pageWidth;
pageWidth = com;
}
}
double margin = 10.0;
double tableWidth = pageWidth - 2.0 * margin;
QTextCharFormat headerBlockCharFormat;
headerBlockCharFormat.setFontCapitalization( QFont::AllUppercase );
headerBlockCharFormat.setFontWeight( QFont::Bold );
QTextBlockFormat headerBlockFormat;
headerBlockFormat.setAlignment( Qt::AlignHCenter );
QTextBlockFormat headerWithPBBlockFormat = headerBlockFormat;
headerWithPBBlockFormat.setPageBreakPolicy( QTextFormat::PageBreak_AlwaysBefore );
QTextBlockFormat parBlockFormat;
if( printPriceList ){
cursor.setBlockFormat( headerWithPBBlockFormat );
cursor.setBlockCharFormat( headerBlockCharFormat );
cursor.insertText( m_d->priceList->name() );
cursor.insertBlock( headerBlockFormat );
cursor.setBlockCharFormat( headerBlockCharFormat );
cursor.insertText(QObject::trUtf8("Elenco Prezzi") );
cursor.insertBlock( parBlockFormat );
QTextTableFormat tableFormat;
tableFormat.setCellPadding(5);
tableFormat.setHeaderRowCount(2);
tableFormat.setBorderStyle( QTextFrameFormat::BorderStyle_Solid);
tableFormat.setWidth( QTextLength( QTextLength::FixedLength, tableWidth ) );
QVector<QTextLength> colWidths;
if( paperOrientation == Qt::Horizontal ){
double descColWidth = tableWidth - ( 30.0 + 20.0 + 35.0 * fieldsToPrint.size() );
colWidths << QTextLength( QTextLength::FixedLength, 30.0 )
<< QTextLength( QTextLength::FixedLength, descColWidth )
<< QTextLength( QTextLength::FixedLength, 20.0 );
for( int i=0; i < fieldsToPrint.size(); ++i ){
colWidths << QTextLength( QTextLength::FixedLength, 35.0 );
}
} else {
double descColWidth = tableWidth - ( 25.0 + 15.0 + 30.0 * fieldsToPrint.size() );
colWidths << QTextLength( QTextLength::FixedLength, 25.0 )
<< QTextLength( QTextLength::FixedLength, descColWidth )
<< QTextLength( QTextLength::FixedLength, 15.0 );
for( int i=0; i < fieldsToPrint.size(); ++i ){
colWidths << QTextLength( QTextLength::FixedLength, 30.0 );
}
}
tableFormat.setColumnWidthConstraints( colWidths );
tableFormat.setHeaderRowCount( 2 );
cursor.insertTable(1, colWidths.size(), tableFormat);
m_d->priceList->writeODTOnTable( &cursor, printOption, fieldsToPrint, priceDataSetToPrint );
cursor.movePosition( QTextCursor::End );
}
if( printPriceAP ){
bool firstAP=true;
QList<PriceItem *> priceItemList = m_d->priceList->priceItemList();
for( int i=0; i < priceItemList.size(); ++i ){
if( (!priceItemList.at(i)->hasChildren()) && (priceItemList.at(i)->associateAP(priceDataSetToPrint)) ){
if( firstAP ){
if( printPriceList ){
//.........这里部分代码省略.........
示例8: qWarning
void InformeCierreCaja::hacerResumen( int id_caja, bool ultimo, int id_cierre )
{
if( id_caja == -1 ) {
qWarning( "Numero de caja incorrecto" );
//abort();
return;
} else if( ultimo == false && id_cierre == -1 ) {
qWarning( "El cierre pedido es incorrecto" );
//abort();
return;
}
// Busco los datos
MMovimientosCaja *m = new MMovimientosCaja( this );
if( ultimo ) {
id_cierre = m->buscarUltimoCierre( id_caja );
if( id_cierre == -1 ) {
return;
}
}
QSqlQuery resultados = m->buscarMovimientos( id_caja, id_cierre );
///////////////////////////////////////////////////////////////////////////////////////////////////
// Inicio el renderizado
QTextCursor cursor( documento );
int cantidadCol = 6;
if( preferencias::getInstancia()->value( "Preferencias/Caja/responsable", true ).toBool() ) { cantidadCol++; }
/////////////////////////////////////
/// Hago la cabecera de la tabla
QTextTable *tabla = cursor.insertTable( 1, cantidadCol );
QTextTableFormat formatoTabla = tabla->format();
formatoTabla.setHeaderRowCount( 1 );
formatoTabla.setWidth( QTextLength( QTextLength::PercentageLength, 100 ) );
tabla->setFormat( formatoTabla );
tabla->cellAt( 0,0 ).firstCursorPosition().insertHtml( " # Op " );
tabla->cellAt( 0,1 ).firstCursorPosition().insertHtml( " Fecha/Hora " );
tabla->cellAt( 0,2 ).firstCursorPosition().insertHtml( " Razon " );
tabla->cellAt( 0,3 ).firstCursorPosition().insertHtml( " Ingreso " );
tabla->cellAt( 0,4 ).firstCursorPosition().insertHtml( " Egreso " );
tabla->cellAt( 0,5 ).firstCursorPosition().insertHtml( " Saldo " );
if( preferencias::getInstancia()->value( "Preferencias/Caja/responsable", true ).toBool() ) {
tabla->cellAt( 0, 6 ).firstCursorPosition().insertHtml( " Responsable " );
}
// Averiguo el saldo hasta el momento del cierre anterior
double saldo_anterior = m->saldoEnMovimientoAnteriorA( id_caja, id_cierre );
while( resultados.next() ) {
int pos = tabla->rows();
tabla->insertRows( pos, 1 );
tabla->cellAt( pos, 0 ).firstCursorPosition().insertHtml( QString( " # %1 " ).arg( resultados.record().value("id_movimiento" ).toInt() ) );
tabla->cellAt( pos, 1 ).firstCursorPosition().insertHtml( resultados.record().value("fecha_hora" ).toDateTime().toString( Qt::SystemLocaleDate ) );
tabla->cellAt( pos, 2 ).firstCursorPosition().insertHtml( resultados.record().value("razon" ).toString() );
if( resultados.record().value( "cierre" ).toBool() == false ) {
// Ingreso
double haber = resultados.record().value( "ingreso" ).toDouble();
saldo_anterior += haber;
tabla->cellAt( pos, 3 ).firstCursorPosition().insertHtml( QString( " $ %L1" ).arg( haber ) );
// Egreso
double debe = resultados.record().value( "egreso" ).toDouble();
saldo_anterior -= debe;
tabla->cellAt( pos, 4 ).firstCursorPosition().insertHtml( QString( " $ %L1" ).arg( debe ) );
// Subtotal hasta el momento
tabla->cellAt( pos, 5 ).firstCursorPosition().insertHtml( QString( " $ %L1" ).arg( saldo_anterior ) );
} else {
saldo_anterior += resultados.record().value( "ingreso" ).toDouble();
tabla->cellAt( pos, 5 ).firstCursorPosition().insertHtml( QString( " $ %L1" ).arg( saldo_anterior ) );
}
if( preferencias::getInstancia()->value( "Preferencias/Caja/responsable", true ).toBool() ) {
tabla->cellAt( pos, 6 ).firstCursorPosition().insertHtml( resultados.record().value( "responsable" ).toString() );
}
}
// Saldos finales
cursor.movePosition( QTextCursor::End );
cursor.insertBlock();
cursor.insertHtml( QString( "<b>Saldo Final:</b> $ %L1" ).arg( saldo_anterior ) );
cursor.insertBlock();
if( preferencias::getInstancia()->value( "Preferencias/Caja/firma", true ).toBool() ) {
cursor.insertBlock();
cursor.insertText( "Controlado por: ________________________" );
cursor.insertBlock();
cursor.insertBlock();
cursor.insertText( "Firma: ____________" );
}
// Termino el resumen
cursor.movePosition( QTextCursor::Start );
cursor.insertBlock();
if( preferencias::getInstancia()->value( "Preferencias/Caja/logo" ).toBool() ) {
//cursor.insertImage( ERegistroPlugins::pluginInfo()->imagenPrograma() );
cursor.insertImage( ":/imagenes/gestotux32.png" );
}
cursor.insertHtml( "<h1>Cierre de Caja</h1>" );
cursor.insertBlock();
cursor.insertHtml( QString( "<b>Fecha de Cierre:</b> %1 <br />" ).arg( QDateTime::currentDateTime().toString( Qt::SystemLocaleLongDate ) ) );
cursor.insertHtml( QString( "<b>Caja:</b> %1<br />").arg( MCajas::nombreCaja( id_caja ) ) );
return;
}
示例9:
QTextTable * PrintDialog::insertCategoryTable(QTextCursor & cursor, const QString & categoryName)
{
QTextBlockFormat blockCategoryTitleFormat;
blockCategoryTitleFormat.setAlignment(Qt::AlignCenter);
blockCategoryTitleFormat.setTopMargin(40.0);
blockCategoryTitleFormat.setBottomMargin(30.0);
QTextCharFormat categoryTitleFormat;
categoryTitleFormat.setFontCapitalization(QFont::AllUppercase);
categoryTitleFormat.setFontWeight(25);
categoryTitleFormat.setFontPointSize(14.0);
QString category = "Category \"";
category += categoryName;
category += "\"";
cursor.insertBlock(blockCategoryTitleFormat);
cursor.insertText(category,categoryTitleFormat);
cursor.insertBlock(QTextBlockFormat()); // to break the previous block format
QTextTable * table = cursor.insertTable(1, 4);
if(!table)
return NULL;
QTextTableFormat categoryTableFormat;
categoryTableFormat.setAlignment(Qt::AlignHCenter);
categoryTableFormat.setHeaderRowCount(1); // header line
categoryTableFormat.setBorderStyle(QTextTableFormat::BorderStyle_Solid);
categoryTableFormat.setBorder(1.0);
categoryTableFormat.setCellPadding(10);
categoryTableFormat.setCellSpacing(0);
table->setFormat(categoryTableFormat);
// header :
// header cell format :
QTextCharFormat headerCellFormat;
headerCellFormat.setFontWeight(50);
headerCellFormat.setFontPointSize(12.0);
headerCellFormat.setBackground(QBrush(QColor(60,60,60)));
headerCellFormat.setForeground(QBrush(QColor(255,255,255)));
QTextTableCell cell = table->cellAt(0,0);
cell.setFormat(headerCellFormat);
cursor = cell.firstCursorPosition();
cursor.insertText(tr("Position"));
cell = table->cellAt(0,1);
cell.setFormat(headerCellFormat);
cursor = cell.firstCursorPosition();
cursor.insertText(tr("LastName"));
cell = table->cellAt(0,2);
cell.setFormat(headerCellFormat);
cursor = cell.firstCursorPosition();
cursor.insertText(tr("Firstname"));
cell = table->cellAt(0,3);
cell.setFormat(headerCellFormat);
cursor = cell.firstCursorPosition();
cursor.insertText(tr("Time"));
return table;
}
示例10: writeTable
bool OutputQtDocument::writeTable()
{
/*
start of table
*/
m_cursor.beginEditBlock();
m_cursor.insertBlock();
m_cursor.insertBlock();
QTextFrame *topFrame = m_cursor.currentFrame();
QTextTableFormat tableFormat;
tableFormat.setCellPadding(4);
tableFormat.setHeaderRowCount(1);
/* tableFormat.setBorderStyle(
QTextFrameFormat::BorderStyle_Double); */
tableFormat.setMargin(2);
tableFormat.setWidth(QTextLength(
QTextLength::PercentageLength, 100));
QTextTable *table = m_cursor.insertTable(
m_params->height()+2, m_params->width()+5, tableFormat);
/*
headers
*/
m_cursor = table->cellAt(0, 0).firstCursorPosition();
m_cursor.insertText("i");
m_cursor = table->cellAt(0, 1).firstCursorPosition();
m_cursor.insertText(tr("basis"));
m_cursor = table->cellAt(0, 2).firstCursorPosition();
m_cursor.insertHtml("C<sub>i</sub> ");
m_cursor = table->cellAt(0, 3).firstCursorPosition();
m_cursor.insertText("B");
for(size_t j=0; j < m_params->width(); j++)
{
m_cursor = table->cellAt(0, j+4).firstCursorPosition();
m_cursor.insertHtml(QString("P<sub>%1</sub> ").arg(j+1));
/* m_cursor.insertHtml(QString("C<sub>%1</sub> =").arg(j+1));
if(m_params->variableType(j) == SimplexMethod::VariableArtificial)
m_cursor.insertText("W");
else
m_cursor.insertText(formatDouble(m_params->rowC(j))); */
}
m_cursor = table->cellAt(0, m_params->width()+4).firstCursorPosition();
m_cursor.insertText(QChar(0x0398)); // theta
/*
matrix, columnCompareOp, columnB, columnTheta
*/
for(size_t i=0; i < m_params->height(); i++)
{
m_cursor = table->cellAt(i+1, 0).firstCursorPosition();
m_cursor.insertText(QString("%1").arg(i+1));
// basis
m_cursor = table->cellAt(i+1, 1).firstCursorPosition();
size_t basisColumn = m_params->columnBasis(i);
m_cursor.insertHtml(QString("P<sub>%1</sub> ").arg(basisColumn+1));
// basis C
m_cursor = table->cellAt(i+1, 2).firstCursorPosition();
if(m_params->variableType(basisColumn) == SimplexMethod::VariableArtificial)
m_cursor.insertText("W");
else
m_cursor.insertText(formatDouble(m_params->rowC(basisColumn)));
// B
m_cursor = table->cellAt(i+1, 3).firstCursorPosition();
m_cursor.insertText(formatDouble(m_params->columnB(i)));
// matrix
for(size_t j=0; j < m_params->width(); j++)
{
m_cursor = table->cellAt(i+1, j+4).firstCursorPosition();
m_cursor.insertText(formatDouble(m_params->matrixA(i, j)));
}
// theta
m_cursor = table->cellAt(i+1, m_params->width()+4).firstCursorPosition();
if(m_params->columnTheta(i) > 0)
m_cursor.insertText(formatDouble(m_params->columnTheta(i)));
else
m_cursor.insertText("-");
}
/*
m+1 row
*/
m_cursor = table->cellAt(m_params->height()+1, 0).firstCursorPosition();
m_cursor.insertText("m+1");
m_cursor = table->cellAt(m_params->height()+1, 3).firstCursorPosition();
m_cursor.insertText(formatDouble(m_params->F()));
for(size_t j=0; j < m_params->width(); j++)
{
m_cursor = table->cellAt(m_params->height()+1, j+4).firstCursorPosition();
//.........这里部分代码省略.........
示例11: qRound
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;
//.........这里部分代码省略.........
示例12: emitTable
void HtmlExporter::emitTable( const QTextTable *table )
{
//qDebug() << "emitTable" << html;
QTextTableFormat format = table->format();
html += QLatin1String( "\n<table" );
if ( format.hasProperty( QTextFormat::FrameBorder ) ) {
emitAttribute( "border", QString::number( format.border() ) );
}
emitFloatStyle( format.position() );
emitAlignment( format.alignment() );
emitTextLength( "width", format.width() );
if ( format.hasProperty( QTextFormat::TableCellSpacing ) ) {
emitAttribute( "cellspacing", QString::number( format.cellSpacing() ) );
}
if ( format.hasProperty( QTextFormat::TableCellPadding ) ) {
emitAttribute( "cellpadding", QString::number( format.cellPadding() ) );
}
QBrush bg = format.background();
if ( bg != Qt::NoBrush ) {
emitAttribute( "bgcolor", bg.color().name() );
}
html += QLatin1Char( '>' );
const int rows = table->rows();
const int columns = table->columns();
QVector<QTextLength> columnWidths = format.columnWidthConstraints();
if ( columnWidths.isEmpty() ) {
columnWidths.resize( columns );
columnWidths.fill( QTextLength() );
}
// Q_ASSERT(columnWidths.count() == columns);
QVarLengthArray<bool> widthEmittedForColumn( columns );
for ( int i = 0; i < columns; ++i ) {
widthEmittedForColumn[i] = false;
}
const int headerRowCount = qMin( format.headerRowCount(), rows );
if ( headerRowCount > 0 ) {
html += QLatin1String( "<thead>" );
}
for ( int row = 0; row < rows; ++row ) {
html += QLatin1String( "\n<tr>" );
for ( int col = 0; col < columns; ++col ) {
const QTextTableCell cell = table->cellAt( row, col );
// for col/rowspans
if ( cell.row() != row ) {
continue;
}
if ( cell.column() != col ) {
continue;
}
html += QLatin1String( "\n<td" );
if ( !widthEmittedForColumn[col] ) {
emitTextLength( "width", columnWidths.at( col ) );
widthEmittedForColumn[col] = true;
}
if ( cell.columnSpan() > 1 ) {
emitAttribute( "colspan", QString::number( cell.columnSpan() ) );
}
if ( cell.rowSpan() > 1 ) {
emitAttribute( "rowspan", QString::number( cell.rowSpan() ) );
}
const QTextCharFormat cellFormat = cell.format();
QBrush bg = cellFormat.background();
if ( bg != Qt::NoBrush ) {
emitAttribute( "bgcolor", bg.color().name() );
}
html += QLatin1Char( '>' );
emitFrame( cell.begin() );
html += QLatin1String( "</td>" );
}
html += QLatin1String( "</tr>" );
if ( headerRowCount > 0 && row == headerRowCount - 1 ) {
html += QLatin1String( "</thead>" );
}
}
html += QLatin1String( "</table>" );
}
示例13: cellStyle
KoTableCellStyle KoTextLayoutTableArea::Private::effectiveCellStyle(const QTextTableCell &tableCell)
{
QTextTableFormat tableFormat = table->format();
KoTableCellStyle cellStyle(tableCell.format().toTableCellFormat());
if (documentLayout->styleManager() && table->format().hasProperty(KoTableStyle::TableTemplate)) {
if (KoTextTableTemplate *tableTemplate = documentLayout->styleManager()->tableTemplate(table->format().intProperty(KoTableStyle::TableTemplate))) {
//priorities according to ODF 1.2, 16.18 - table:table-template
if (tableCell.column() == 0 && tableTemplate->firstColumn()
&& tableFormat.boolProperty(KoTableStyle::UseFirstColumnStyles)) {
cellStyle = *(documentLayout->styleManager()->tableCellStyle(tableTemplate->firstColumn()));
return cellStyle;
}
if (tableCell.column() == (table->columns() - 1) && tableTemplate->lastColumn()
&& tableFormat.boolProperty(KoTableStyle::UseLastColumnStyles)) {
cellStyle = *(documentLayout->styleManager()->tableCellStyle(tableTemplate->lastColumn()));
return cellStyle;
}
if (tableCell.row() == 0 && tableTemplate->firstRow()
&& tableFormat.boolProperty(KoTableStyle::UseFirstRowStyles)) {
cellStyle = *(documentLayout->styleManager()->tableCellStyle(tableTemplate->firstRow()));
return cellStyle;
}
if (tableCell.row() == (table->rows() - 1) && tableTemplate->lastRow()
&& tableFormat.boolProperty(KoTableStyle::UseLastRowStyles)) {
cellStyle = *(documentLayout->styleManager()->tableCellStyle(tableTemplate->lastRow()));
return cellStyle;
}
if (((tableCell.row() + 1) % 2) == 0 && tableTemplate->evenRows()
&& tableFormat.boolProperty(KoTableStyle::UseBandingRowStyles)) {
cellStyle = *(documentLayout->styleManager()->tableCellStyle(tableTemplate->evenRows()));
return cellStyle;
}
if (((tableCell.row() + 1) % 2) != 0 && tableTemplate->oddRows()
&& tableFormat.boolProperty(KoTableStyle::UseBandingRowStyles)) {
cellStyle = *(documentLayout->styleManager()->tableCellStyle(tableTemplate->oddRows()));
return cellStyle;
}
if (((tableCell.column() + 1) % 2) == 0 && tableTemplate->evenColumns()
&& tableFormat.boolProperty(KoTableStyle::UseBandingColumnStyles)) {
cellStyle = *(documentLayout->styleManager()->tableCellStyle(tableTemplate->evenColumns()));
return cellStyle;
}
if (((tableCell.column() + 1) % 2) != 0 && tableTemplate->oddColumns()
&& tableFormat.boolProperty(KoTableStyle::UseBandingColumnStyles)) {
cellStyle = *(documentLayout->styleManager()->tableCellStyle(tableTemplate->oddColumns()));
return cellStyle;
}
if (tableTemplate->body()) {
cellStyle = *(documentLayout->styleManager()->tableCellStyle(tableTemplate->body()));
}
}
}
return cellStyle;
}
示例14: layoutColumns
void KoTextLayoutTableArea::layoutColumns()
{
QTextTableFormat tableFormat = d->table->format();
d->columnPositions.resize(d->table->columns() + 1);
d->columnWidths.resize(d->table->columns() + 1);
// Table width.
d->tableWidth = 0;
qreal parentWidth = right() - left();
if (tableFormat.width().rawValue() == 0 || tableFormat.alignment() == Qt::AlignJustify) {
// We got a zero width value or alignment is justify, so use 100% of parent.
d->tableWidth = parentWidth - tableFormat.leftMargin() - tableFormat.rightMargin();
} else {
if (tableFormat.width().type() == QTextLength::FixedLength) {
// Fixed length value, so use the raw value directly.
d->tableWidth = tableFormat.width().rawValue();
} else if (tableFormat.width().type() == QTextLength::PercentageLength) {
// Percentage length value, so use a percentage of parent width.
d->tableWidth = tableFormat.width().rawValue() * (parentWidth / 100)
- tableFormat.leftMargin() - tableFormat.rightMargin();
} else {
// Unknown length type, so use 100% of parent.
d->tableWidth = parentWidth - tableFormat.leftMargin() - tableFormat.rightMargin();
}
}
// Column widths.
qreal availableWidth = d->tableWidth; // Width available for columns.
QList<int> fixedWidthColumns; // List of fixed width columns.
QList<int> relativeWidthColumns; // List of relative width columns.
qreal relativeWidthSum = 0; // Sum of relative column width values.
int numNonStyleColumns = 0;
for (int col = 0; col < d->table->columns(); ++col) {
KoTableColumnStyle columnStyle = d->carsManager.columnStyle(col);
if (columnStyle.hasProperty(KoTableColumnStyle::RelativeColumnWidth)) {
// Relative width specified. Will be handled in the next loop.
d->columnWidths[col] = 0.0;
relativeWidthColumns.append(col);
relativeWidthSum += columnStyle.relativeColumnWidth();
} else if (columnStyle.hasProperty(KoTableColumnStyle::ColumnWidth)) {
// Only width specified, so use it.
d->columnWidths[col] = columnStyle.columnWidth();
fixedWidthColumns.append(col);
availableWidth -= columnStyle.columnWidth();
} else {
// Neither width nor relative width specified.
d->columnWidths[col] = 0.0;
relativeWidthColumns.append(col); // handle it as a relative width column without asking for anything
++numNonStyleColumns;
}
}
// Handle the case that the fixed size columns are larger then the defined table width
if (availableWidth < 0.0) {
if (tableFormat.width().rawValue() == 0 && fixedWidthColumns.count() > 0) {
// If not table width was defined then we need to scale down the fixed size columns so they match
// into the width of the table.
qreal diff = (-availableWidth) / qreal(fixedWidthColumns.count());
foreach(int col, fixedWidthColumns) {
d->columnWidths[col] = qMax(qreal(0.0), d->columnWidths[col] - diff);
}
}
示例15: QTextDocument
void FormSimularCuotas::generaReporte()
{
documento = new QTextDocument();
QTextCursor cursor( documento );
int cant_filas = 3 + SBCantidad->value();
QTextTable *tabla = cursor.insertTable( cant_filas, 5 );
QTextTableFormat formatoTabla = tabla->format();
formatoTabla.setHeaderRowCount( 1 );
formatoTabla.setWidth( QTextLength( QTextLength::PercentageLength, 100 ) );
formatoTabla.setBorderStyle( QTextFrameFormat::BorderStyle_Solid );
formatoTabla.setBorder( 1 );
formatoTabla.setCellPadding( 3 );
formatoTabla.setCellSpacing( 0 );
tabla->setFormat( formatoTabla );
tabla->cellAt( 0,0 ).firstCursorPosition().insertHtml( "<b> # Cuota</b>" );
tabla->cellAt( 0,1 ).firstCursorPosition().insertHtml( "<b> Fecha de pago </b>" );
tabla->cellAt( 0,2 ).firstCursorPosition().insertHtml( "<b> Cuota </b>" );
tabla->cellAt( 0,3 ).firstCursorPosition().insertHtml( "<b> Pagado </b> " );
tabla->cellAt( 0,4 ).firstCursorPosition().insertHtml( "<b> Subtotal </b>" );
QTextBlockFormat bfizq = tabla->cellAt( 0, 3 ).firstCursorPosition().blockFormat();
bfizq.setAlignment( Qt::AlignRight );
// Ingreso los datos
double subtotal = DSBImporte->value();
double pagado = DSBEntrega->value();
// Importe
tabla->cellAt( 1, 0 ).firstCursorPosition().insertHtml( " " );
tabla->cellAt( 1, 1 ).firstCursorPosition().insertHtml( "Importe a pagar en cuotas" );
tabla->cellAt( 1, 2 ).firstCursorPosition().setBlockFormat( bfizq );
tabla->cellAt( 1, 2 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( subtotal, 10, 'f', 2 ) );
tabla->cellAt( 1, 3 ).firstCursorPosition().setBlockFormat( bfizq );
tabla->cellAt( 1, 3 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( 0.0, 10, 'f', 2 ) );
tabla->cellAt( 1, 4 ).firstCursorPosition().setBlockFormat( bfizq );
tabla->cellAt( 1, 4 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( subtotal, 10, 'f', 2 ) );
subtotal -= DSBEntrega->value();
tabla->cellAt( 2, 0 ).firstCursorPosition().insertHtml( "" );
tabla->cellAt( 2, 1 ).firstCursorPosition().insertHtml( "Entrega inicial" );
tabla->cellAt( 2, 2 ).firstCursorPosition().setBlockFormat( bfizq );
tabla->cellAt( 2, 2 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( DSBEntrega->value(), 10, 'f', 2 ) );
tabla->cellAt( 2, 3 ).firstCursorPosition().setBlockFormat( bfizq );
tabla->cellAt( 2, 3 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( pagado, 10, 'f', 2 ) );
tabla->cellAt( 2, 4 ).firstCursorPosition().setBlockFormat( bfizq );
tabla->cellAt( 2, 4 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( subtotal, 10, 'f', 2 ) );
subtotal *= ( 1 + DSBInteres->value() / 100 );
double valor_cuota = ( ( DSBTotal->value() ) * ( 1 + DSBInteres->value() / 100 ) ) / SBCantidad->value();
QDate fch = DEInicio->date();
for( int i = 1; i<=SBCantidad->value(); i++ ) {
tabla->cellAt( i+2, 0 ).firstCursorPosition().insertHtml( QString( "#%1" ).arg( i ) );
tabla->cellAt( i+2, 1 ).firstCursorPosition().insertHtml( QString( "%1" ).arg( fch.toString( Qt::SystemLocaleShortDate ) ) );
fch.addDays( (i-1)*MPlanCuota::diasEnPeriodo( (MPlanCuota::Periodo) CBPeriodo->currentIndex(), fch ) );
tabla->cellAt( i+2, 2 ).firstCursorPosition().setBlockFormat( bfizq );
tabla->cellAt( i+2, 2 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( valor_cuota, 10, 'f', 2 ) );
pagado += valor_cuota;
tabla->cellAt( i+2, 3 ).firstCursorPosition().setBlockFormat( bfizq );
tabla->cellAt( i+2, 3 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( pagado, 10, 'f', 2 ) );
subtotal -= valor_cuota;
tabla->cellAt( i+2, 4 ).firstCursorPosition().setBlockFormat( bfizq );
tabla->cellAt( i+2, 4 ).firstCursorPosition().insertHtml( QString( "$ %L1" ).arg( subtotal, 10, 'f', 2 ) );
}
// Firma y aclaracion
cursor.movePosition( QTextCursor::End );
cursor.insertBlock();
cursor.insertBlock();
cursor.insertBlock();
cursor.insertBlock();
cursor.insertBlock();
cursor.insertText( "Firma del contrayente: ___________________________" );
cursor.insertBlock();
cursor.insertBlock();
cursor.insertBlock();
cursor.insertBlock();
cursor.insertText( QString::fromUtf8( "Aclaracion: ________________________________________________ DNI:___-__________-___" ) );
cursor.insertBlock();
cursor.insertBlock();
cursor.insertHtml( QString::fromUtf8( "<small>En caso de provocarse un atraso en la fecha de pago de cualquiera de las cuotas, se aplicara el recargo correspondiente tal cual se hace actualmenete con cualquier recibo emitido por nuestra entidad.</small>" ) );
// Cabecera
cursor.movePosition( QTextCursor::Start );
cursor.insertBlock();
#ifdef Q_OS_WIN
cursor.insertHtml( "<h1>HiComp Computación</h1><br />" );
#else
cursor.insertHtml( "<h1>" + ERegistroPlugins::getInstancia()->pluginInfo()->empresa() + "</h1><br />" );
#endif
cursor.insertHtml( "<h2>Plan de cuotas</h2><br /><br />" );
cursor.insertBlock();
cursor.insertHtml( QString( "<b>Fecha de Inicio:</b> %1 <br />" ).arg( DEInicio->date().toString( Qt::SystemLocaleLongDate ) ) );
cursor.insertHtml( QString( "<b>Nombre del cliente:</b> %1 <br />").arg( MClientes::getRazonSocial( _id_cliente ) ) );
return;
}