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

Qt 5 QWebEngine page printToPdf C2668 ambiguous call to overloaded function

我有下一个代码:

page.printToPdf("test.pdf");

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

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

并且无法理解原因,因为从文档中可以看出:

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

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

第一个界面使用 QString,第二个界面使用 QByteArray。看着 qt docs

The resultCallback must take a const reference to a QByteArray as parameter.

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

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