Qt 5 QWebEngine 页面 printToPdf C2668 对重载函数的模糊调用

Posted

技术标签:

【中文标题】Qt 5 QWebEngine 页面 printToPdf C2668 对重载函数的模糊调用【英文标题】:Qt 5 QWebEngine page printToPdf C2668 ambiguous call to overloaded function 【发布时间】:2016-11-07 20:22:34 【问题描述】:

我有下一个代码:

page.printToPdf("test.pdf");

但是当使用 VS2015 编译它时,我得到了这个错误:

error: C2668: 'QWebEnginePage::printToPdf': ambiguous call to overloaded function

并且无法理解为什么,因为从文档中:

printToPdf(const QString &filePath, ...)
printToPdf(FunctorOrLambda resultCallback, ...)

【问题讨论】:

【参考方案1】:

这是因为QStringQByteArray 都有一个const char *str 构造函数。所以编译器无法判断调用哪个函数。

第一个接口使用QString,而第二个使用QByteArray。看着 qt docs

resultCallback 必须采用对 QByteArray 的 const 引用作为参数。

因此,显式传递QStringQByteArray 应该可以解决问题。例如,

QString str = "test.pdf";
page.printToPdf(str);

【讨论】:

以上是关于Qt 5 QWebEngine 页面 printToPdf C2668 对重载函数的模糊调用的主要内容,如果未能解决你的问题,请参考以下文章

实现QObject与JavaScript通讯(基于QWebEngine + QWebChannel)

在最新Qt5.4,使用QWebengine,如何js调用Qt

QT,折腾的几天-----关于 QWebEngine的使用

使用 Qt5 的 QWebEngine

使用 Qt 5.5 或 5.6 打印网页的 HTML/内容

在最新Qt5.4,使用QWebengine,如何js调用Qt