Qt QWebView未正确加载图像
我创建了一个应用程序,它使用QWebView创建模板,然后将其打印为pdf文件。 在视图中,我为主体设置了一个背景图像,在执行程序时,第一次打印pdf时,图像没有打印在pdf中。然后,我再次打印相同的pdf文件,图像就会出现。因此,对于所有的子线索打印。 所以,它不仅仅适用于第一次打印 我删除了html代码的bug,并且一直在设置backgrund图像 为了打印pdf文件,我使用以下方法:Qt QWebView未正确加载图像,qt,qwebview,qprinter,Qt,Qwebview,Qprinter,我创建了一个应用程序,它使用QWebView创建模板,然后将其打印为pdf文件。 在视图中,我为主体设置了一个背景图像,在执行程序时,第一次打印pdf时,图像没有打印在pdf中。然后,我再次打印相同的pdf文件,图像就会出现。因此,对于所有的子线索打印。 所以,它不仅仅适用于第一次打印 我删除了html代码的bug,并且一直在设置backgrund图像 为了打印pdf文件,我使用以下方法: QPrinter printer; printer.setOrientation(QPrinter::La
QPrinter printer;
printer.setOrientation(QPrinter::Landscape);
printer.setPaperSize(QSizeF(76.2,180),QPrinter::Millimeter);
printer.setPageMargins(27,11.2,4,4.4,QPrinter::Millimeter);
QPrintDialog *dialog = new QPrintDialog(&printer);
if (dialog->exec() == QDialog::Accepted){
QWebView *view = new QWebView();
QUrl url(QApplication::applicationDirPath());
view->setHtml(cheque,url);
view->print(&printer);
}
其中check是html模板问题在于对象在QWebView中异步加载。因此,我在调用QPrintDialog之前声明了QWebView
QPrinter printer;
printer.setOrientation(QPrinter::Landscape);
printer.setPaperSize(QSizeF(76.2,180),QPrinter::Millimeter);
printer.setPageMargins(27,11.2,4,4.4,QPrinter::Millimeter);
QWebView *view = new QWebView();
QUrl url(QApplication::applicationDirPath());
view->setHtml(cheque,url);
QPrintDialog *dialog = new QPrintDialog(&printer);
if (dialog->exec() == QDialog::Accepted){
view->print(&printer);
}
是否创建新的QWebView实例QWebView*视图=新的QWebView;对于问题中的每个后续打印,代码或视图被重用并存储为类成员?来自QWebView::setHtml文档:html立即加载;外部对象是异步加载的。我猜当你调用view->setHtml时,图像还没有加载。这可能就是问题所在。谢谢,伙计们,解决了它。从时间竞赛的角度来看,这个解决方案是不安全的。当然,打印对话框通常需要相当长的时间,因此QWebView可以完成其内容的加载。然而,这是一个错误。只有在加载页面时才应开始打印。可以使用信号QWebView::loadFinishedbool来正确执行此操作。