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

时间:2011-11-29 12:28:43

标签: 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-&gt; show(),那么它已正确显示图像,但打印页面显示为空白。请你查看上面的代码并纠正我在哪里做错了。

此致 Lekhraj

2 个答案:

答案 0 :(得分:7)

您将一些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

答案 1 :(得分:1)

您尝试在调用其load()函数后立即打印QWebView。但是QWebView尚未加载内容,因此视图为空白。您需要将QWebView的loadFinished信号连接到可以调用print()函数的某个插槽。阅读QWebView's documentation