qt - 如何使用QT从打印机打印图像文件

我正在尝试使用 QWebview 在打印机上打印图像文件,但打印的不是图像而是空白页。请找到以下代码。

void ChartViewer::onprintBtnClicked()
{
    QString fileName = QFileDialog::getOpenFileName(this,"Open File",QString(),"Pdf File(*.png)");
    qDebug()<<"Print file name is "<<fileName;
    if(fileName.endsWith(".png"))
    {
        QPrinter printer;
        QWebView *view = new QWebView;
        QPrintDialog *dlg = new QPrintDialog(&printer,this);
        printer.setOutputFileName(fileName);
        if(dlg->exec() != QDialog::Accepted)
            return;
        view->load(fileName);
        view->print(&printer);
    }
}

如果我使用 view->show() 那么它会正确显示图像,但打印页面会变成空白。请您查看上面的代码并纠正我做错的地方。

问候, 拉赫拉吉

最佳答案

您将一些 png 文件加载到 fileName 中。然后你设置 QPrinter 使用 printer.setOutputFileName(fileName); 打印到那个 png 文件。我想这是错误的,它可能应该是一些不同的 pdf 文件。

我不确定我是否明白你想做什么?如何使用 QPrinter 打印图像文件?成pdf文件?为什么要尝试使用 QWebView? 您可以使用 QImage 加载图像文件,然后在 QPrinter 上使用 QPainter 进行绘制。

#include <QtGui>
#include <QtCore>

int main(int argc, char** argv) {
        QApplication app(argc, argv);

        QString fileName = QFileDialog::getOpenFileName(0,"Open File",QString(),"PNG File(*.png)");

        QPrinter printer;
        QPrintDialog *dlg = new QPrintDialog(&printer,0);
        if(dlg->exec() == QDialog::Accepted) {
                QImage img(fileName);
                QPainter painter(&printer);
                painter.drawImage(QPoint(0,0),img);
                painter.end();
        }

        delete dlg;

        QTimer::singleShot(1, &app, SLOT(quit()));
        app.exec();
        return 0;
}

您的一些问题可能与您的其他问题重叠 https://stackoverflow.com/questions/8297239/how-to-print-pdf-file-in-qt

https://stackoverflow.com/questions/8310681/

相关文章:

f# - 错误 FS1133 : No constructors are available for

git - 当我用分支推送时,.gitignore 不会忽略文件

visual-studio - VS2010 中缺少“属性页”选项卡

php - 在表单中发布非输入字段?

c# - 如何从后面的 C# 代码更新 WPF 绑定(bind)的值?

php - 我可以将匿名函数放在 PHP 的数组中吗?

assembly - 将二进制转换为十进制并在汇编中显示

sql-server - SQL Server 2008,我可以在 udf 中的 select 语句

vb.net - 从 ListView 中删除项目

sql - 使用 SQL 脚本创建 SQL Server 数据库