QGraphicsScene在打印时不会缩放到页面

时间:2014-02-13 20:48:28

标签: c++ qt qgraphicsscene qprinter

我正在编写一个程序,除其他外,创建一个每周Outlook风格的时间表(沿着顶部的一周中的几天,沿着左侧的时间,以及表示约会的网格中的框)。我已将QGraphicsScene类子类化,并将其与QGraphicsView结合使用,以在GUI中显示计划。

问题出现了,我正在尝试打印时间表。我希望它能够打印并自动缩放以适合页面。从我所做的研究来看,代码应该相对简单:

QPrinter printer( QPrinter::HighResolution );
if( QPrintDialog( &printer ).exec() == QDialog::Accepted ) 
{
    QPainter painter( &printer );
    schedule_scene->render( &painter );
}

但是,这会产生输出,文本标签卡在左上角,没有可见的框/网格线,好像它试图在一个令人难以置信的小盒子中渲染场景。如果我做出以下更改:

schedule_scene->render( &painter, QRectF( 0, 0, 600, 600 ) );

然后按照预期在600x600的小盒子中打印。

我一直在使用Windows XPS打印机和CutePDF打印机进行测试,因为我现在没有连接到我的开发机器的实际打印机。

根据我所做的研究,QGraphicsScene应该扩展以使用所有默认参数填充页面。为什么我的子类场景不会自动缩放以适应整个页面?我错过了我需要实施的方法吗?

编辑:在代码中手动设置页面大小可以解决问题:

QPrinter printer( QPrinter::HighResolution );
if( QPrintDialog( &printer ).exec() == QDialog::Accepted ) 
{
    printer.setPageSize( QPagedPaintDevice::PageSize::Letter );
    QPainter painter( &printer );
    schedule_scene->render( &painter );
}

为什么“打印”对话框不会自行设置页面大小?

0 个答案:

没有答案