C++ 使用渲染方法打印QTableView
我正在尝试打印表视图。为了填充表格视图,我创建了自己的模型。要打印表格,我将执行以下操作:C++ 使用渲染方法打印QTableView,c++,qt,pdf-generation,C++,Qt,Pdf Generation,我正在尝试打印表视图。为了填充表格视图,我创建了自己的模型。要打印表格,我将执行以下操作: QPrinter printer; QPrintDialog printDialog( &printer, 0); if( QDialog::Accepted == printDialog.exec() ) { if( QPrinter::Landscape != printer.orientation() ) { printer.setOrientation(QPrin
QPrinter printer;
QPrintDialog printDialog( &printer, 0);
if( QDialog::Accepted == printDialog.exec() ) {
if( QPrinter::Landscape != printer.orientation() ) {
printer.setOrientation(QPrinter::Landscape);
}
QPoint startPoint = QPoint(20, 20);
QRegion printRegion = QRegion( 20, 20, printer.paperRect().width(),printer.paperRect().height() );
for( int i = 0; i < m_tables.size(); ++i ) {
tableView->render( &printer, startPoint, printRegion, QWidget::DrawChildren );
}
}
QPrinter打印机;
QPrintDialog打印对话框(&printer,0);
如果(QDialog::Accepted==printDialog.exec()){
if(QPrinter::横向!=printer.orientation()){
打印机设置方向(QPrinter::横向);
}
QPoint startPoint=QPoint(20,20);
QRegion printRegion=QRegion(20,20,printer.paperRect().width(),printer.paperRect().height());
对于(int i=0;irender(&printer、startPoint、printRegion、QWidget::DrawChildren);
}
}
问题是我正在打印成PDF文件,在那里我只能看到表格的一小部分。我认为更改区域参数会有所帮助,但事实上并非如此。如何解决此问题的任何建议?您可以尝试
void QPrinter::setResolution(int dpi)
强制每个打印机英寸有若干小部件像素,有效地在打印输出上缩放小部件。好的,这是我的解决方案。很高兴听到你的意见
PrintTableModel* pTableModel = new PrintTableModel();
QTableView* pTableView = new QTableView;
pTableView->setModel(pTableModel);
int width = 0;
int height = 0;
int columns = pTableModel->columnCount();
int rows = pTableModel->rowCount();
pTableView->resizeColumnsToContents();
for( int i = 0; i < columns; ++i ) {
width += pTableView->columnWidth(i);
}
for( int i = 0; i < rows; ++i ) {
height += pTableView->rowHeight(i);
}
pTableView->setFixedSize(width, height);
pTableView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
pTableView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
“我只能看到桌子的一小部分”,你的意思是它的边缘被截断了,对吗?对。我可以看到几个单元格和滚动条。你的解决方案很好,并解释了这一点()。在这些链接中还介绍了一种打印表格的方法,该表格不适合(太多的列或行)一页。
pTableView->render(printer);