我想创建一个Windows应用程序(但最终也将其移植到linux上,因此如果可能,交叉兼容性很重要),它将从网络摄像头拍摄图片,并且可以不使用一个printDialog框,但我在选择纸张大小时遇到问题。我希望纸张大小设置为A6格式的4“x 6”,但是当我使用setPaperSize(QtPrinter :: A6)时,它似乎默认为字母格式。虽然并不总是默认使用所有打印机,但看起来每个打印机都以不同的方式处理命令,但大多数默认为letter。我相信这可能是Qt和打印机与驱动程序兼容性的问题。Qt QPrinter setPaperSize不能正常工作
我的问题是:有没有人知道一种方法将打印机设置为4“6”在QT应该与所有打印机一起工作?
我的代码如下所示。
void MainWindow::Print() {
QPainter painter;
QPrinter *printer = new QPrinter(QPrinter::HighResolution);
printer->setPaperSize(QPrinter::A6);
if (!painter.begin(printer)) {
qWarning("Failed to open file");
return;
}
painter.fillRect(QRectF(QPointF(108,118),QPointF(110+352, 120+352)), Qt::black);
painter.fillRect(QRectF(QPointF(109,119),QPointF(109+352, 119+352)), Qt::white);
ui->graphicsView->scene()->render(&painter, QRectF(110,120, 350, 350), QRectF(0,0, ui->graphicsView->scene()->width(), ui->graphicsView->scene()->height()), Qt::IgnoreAspectRatio);
painter.drawText(110, 110, "Test");
painter.end();
}
我试图调整大小的纸张
printer->setPaperSize(QPrinter::A6)
printer->setPageSize(QPrinter::A6)
printer->setPaperSize(QSizeF(4.0, 6.0), QPrinter::Inch)
这些都不似乎工作如下。如果有人可以帮我解决这个问题,我会非常大胆
我想我可能最终不得不这样做,但希望有人知道一个更简单的解决方案。尽管谢谢你的帮助 – Heheas 2013-02-15 20:27:24