qt - 无法在 Qt 中打印到纸上
问题描述
由于某种原因,我无法打印到纸上。所以我有一台功能打印机。我使用以下代码打印一个 qDialog 和一些图片:
QPrinter printer;
QPainter painter;
painter.begin(&printer);
double xscale = printer.width() / double(window->width());
double yscale = printer.height() / double(window->height());
double scale = qMin(xscale, yscale);
painter.scale(scale, scale);
QPrintDialog printDialog(&printer, this);
if (printDialog.exec() == QDialog::Accepted) {
bool skip = true;
if(ui->generalInfos->isChecked()) {
//window is a QDialog I want to print out
window->render(&painter);
skip = false;
}
QList<Document *> docs;
if(worker) {
//a list with path to pictures
docs = worker->getDocuments();
}
for(auto document : docs) {
if(ui->Documents->isChecked(document->getID())) {
for(auto scan : document->getScans()) {
if(!skip) {
printer.newPage();
}
else {
skip = false;
}
painter.resetTransform();
const QImage image(scan);
const QPoint imageCoordinates(0,0);
xscale = printer.width() / double(image.width());
yscale = printer.height() / double(image.height());
scale = qMin(xscale, yscale);
painter.scale(scale, scale);
painter.drawImage(imageCoordinates,image);
}
}
}
}
painter.end();
它不起作用。没有打印任何内容并且 Qt 抛出错误:
QWin32PrintEngine::newPage: EndPage failed (The parameter is incorrect.)
QWin32PrintEngine::end: EndPage failed (0x31210cf7) (The parameter is incorrect.)
有人可以帮帮我吗?
解决方案
如果您简化代码,您可能会找到解决方案。所以让我们从选择打印机开始,然后(之后!)开始在打印机上绘画:
QPrinter printer;
QPrintDialog printDialog(&printer, this);
if (printDialog.exec() == QDialog::Accepted)
{
QPainter painter;
painter.begin(&printer);
window->render(&painter);
painter.end();
}
如果可行,请将更多旧代码添加到上面的草图中。如果它不起作用,那么您的程序或环境中的其他东西(选择的打印机?)是错误的,因此您需要将您的错误搜索扩展到您在此处向我们展示的内容之外。
推荐阅读
- python - 使用循环将最小最大标量应用于多个数据集
- rust - Rust rusqlite 无法插入行
- django - 如何从 django rest 框架访问 jwt 令牌到 Angular 前端
- reactjs - 使用'exact'时子组件内部的路由不起作用:ReactJs
- python - 使用 tkinter wait_variable() 的正确方法是什么?
- java - 如何从 IntelliJ 中删除它?
- python - 卸载后,Visual Studio Code 一直尝试使用 conda.exe
- vue.js - 如何在选择第一个复选框时选择第二个复选框?
- asp.net-mvc - 如何在使用 VB.net 的 MVC 创建页面中隐藏自动增量 ID 字段
- c - 计算矩阵乘法的C程序