void TableEditor::printt()
{
//printer.setFullPage(true);
//printer.setPageSize(QPrinter::A4);
/*int rightMargin = printer.paperRect().right() - printer.pageRect().right();
int bottomMargin = printer.paperRect().bottom() - printer.pageRect().bottom();
int leftMargin = printer.paperRect().left() - printer.pageRect().left();
int topMargin = printer.paperRect().top() - printer.pageRect().top();*/ //This is commented
//printer.margins(&topMargin,&leftMargin,&bottomMargin, &rightMargin);
printer.setOutputFileName("rtest.ps");
double totalWidth = 0.0;
double totalHeight = 0.0;
double totalPageHeight=0.0;
//QRect area;
if (dlg.
exec() == QDialog::Accepted){ const int rows=view->model()->rowCount();
const int cols = view->model()->columnCount();
printf("no of rows\n %d",rows);
printf("\n no of columns %d",cols);
for (int c = 0; c < cols; ++c) {
totalWidth += view->columnWidth(c); }
for(int p=0; p<45; p++) //45
{
totalPageHeight+= view->rowHeight(p);
}
for (int r = 0; r < rows; ++r)
{ totalHeight += view->rowHeight(r); }
} //if loop ending here
//QPainter::setRedirected(view->viewport(), &painter);
//QPaintEvent event(QRect(0, 0, totalWidth, totalHeight));
//view->paintEvent(&event);
//painter.drawLines(0,0,rows,cols);
//QApplication::sendEvent(view->viewport(), &event);
//QPainter::restoreRedirected(view->viewport()); //This is commented for testing row nums
//QPainter painter(&printer);
painter.begin(&printer);
const int rows=view->model()->rowCount();
const int columns=view->model()->columnCount();
printf("The num of rows are %d",rows);
QRect area
= printer.
paperRect();
// here should be pageRect const double xscale = area.width() / totalWidth;
const double yscale = area.height() / totalHeight;
const double pscale = area.height() / totalPageHeight;
painter.scale(xscale+9, yscale+9); // With the scaling 3 It is Printing all
//painter.translate(area.x() + xscale, area.y() + pscale); //This is original
painter.translate(area.x() + xscale, area.y() + yscale);
//painter.save(); //commented
int x=0;
//int y=0 ;// This is introduced for the columns
//view->paintEvent(&event);
paint.setPen(Qt::red);
paint.drawRect(0, 0, 0, 0);
for (int r=0; r<rows; r++)
{
++x;
for(int c=0; c<columns; c++)
{
//++y;
/*double xscale = printer.pageRect().width() / width();
double yscale = printer.pageRect().height() / height();
double scale = qMin(xscale, yscale);
QRect rect = painter.viewport( ); */
//QSize size = pixmap.size( );
//size.scale( rect.size( ), Qt::KeepAspectRatio );
//painter.drawLines(0,0,rows,columns);
option = view->viewOptions();
option.rect =view->visualRect(idx);
view->itemDelegate()->paint(&painter, option, idx);
// painter.drawPixmap(printer.pageRect(), pixmap, pixmap.rect());
// painter.drawPixmap((r,c), pixmap, pixmap.rect());
// if(page!=printer.numCopies())
} //columns are closed here
if (x==39)
{
printf("This is inside if loop %d:",x);
printer.newPage();
x=0;
//y=0;
painter.translate(0, -1150);
//painter.translate(0,-1000);
//painter.translate(0,-850);
x=0;
// page++
//painter.drawPixmap(printer.pageRect(), pixmap, pixmap.rect());
//x=0;
painter.save();
painter.restore();
// break;
}
printf("%d",rows);
// }
}
painter.end();
system("apsprint rtest.ps");
}
void TableEditor::printt()
{
QPrinter printer(QPrinter::HighResolution);
//printer.setFullPage(true);
//printer.setPageSize(QPrinter::A4);
/*int rightMargin = printer.paperRect().right() - printer.pageRect().right();
int bottomMargin = printer.paperRect().bottom() - printer.pageRect().bottom();
int leftMargin = printer.paperRect().left() - printer.pageRect().left();
int topMargin = printer.paperRect().top() - printer.pageRect().top();*/ //This is commented
//printer.margins(&topMargin,&leftMargin,&bottomMargin, &rightMargin);
printer.setOutputFileName("rtest.ps");
QPrintDialog dlg(&printer, this);
double totalWidth = 0.0;
double totalHeight = 0.0;
double totalPageHeight=0.0;
//QRect area;
if (dlg.exec() == QDialog::Accepted){
const int rows=view->model()->rowCount();
const int cols = view->model()->columnCount();
printf("no of rows\n %d",rows);
printf("\n no of columns %d",cols);
for (int c = 0; c < cols; ++c) {
totalWidth += view->columnWidth(c); }
for(int p=0; p<45; p++) //45
{
totalPageHeight+= view->rowHeight(p);
}
for (int r = 0; r < rows; ++r)
{ totalHeight += view->rowHeight(r); }
} //if loop ending here
QPainter painter(&printer);
//QPainter::setRedirected(view->viewport(), &painter);
//QPaintEvent event(QRect(0, 0, totalWidth, totalHeight));
//view->paintEvent(&event);
//painter.drawLines(0,0,rows,cols);
//QApplication::sendEvent(view->viewport(), &event);
//QPainter::restoreRedirected(view->viewport()); //This is commented for testing row nums
//QPainter painter(&printer);
painter.begin(&printer);
const int rows=view->model()->rowCount();
const int columns=view->model()->columnCount();
printf("The num of rows are %d",rows);
QRect area = printer.paperRect(); // here should be pageRect
const double xscale = area.width() / totalWidth;
const double yscale = area.height() / totalHeight;
const double pscale = area.height() / totalPageHeight;
painter.scale(xscale+9, yscale+9); // With the scaling 3 It is Printing all
//painter.translate(area.x() + xscale, area.y() + pscale); //This is original
painter.translate(area.x() + xscale, area.y() + yscale);
//painter.save(); //commented
int x=0;
//int y=0 ;// This is introduced for the columns
//view->paintEvent(&event);
QPainter paint(this);
paint.setPen(Qt::red);
paint.drawRect(0, 0, 0, 0);
QStyleOptionViewItem option;
for (int r=0; r<rows; r++)
{
++x;
for(int c=0; c<columns; c++)
{
//++y;
/*double xscale = printer.pageRect().width() / width();
double yscale = printer.pageRect().height() / height();
double scale = qMin(xscale, yscale);
QRect rect = painter.viewport( ); */
//QSize size = pixmap.size( );
//size.scale( rect.size( ), Qt::KeepAspectRatio );
//painter.drawLines(0,0,rows,columns);
QModelIndex idx = view->model()->index(r,c);
option = view->viewOptions();
option.rect =view->visualRect(idx);
view->itemDelegate()->paint(&painter, option, idx);
// painter.drawPixmap(printer.pageRect(), pixmap, pixmap.rect());
// painter.drawPixmap((r,c), pixmap, pixmap.rect());
// if(page!=printer.numCopies())
} //columns are closed here
if (x==39)
{
printf("This is inside if loop %d:",x);
printer.newPage();
x=0;
//y=0;
painter.translate(0, -1150);
//painter.translate(0,-1000);
//painter.translate(0,-850);
x=0;
// page++
//painter.drawPixmap(printer.pageRect(), pixmap, pixmap.rect());
//x=0;
painter.save();
painter.restore();
// break;
}
printf("%d",rows);
// }
}
painter.end();
system("apsprint rtest.ps");
}
To copy to clipboard, switch view to plain text mode
Bookmarks