使用 QWebview 会产生编译错误,但不是因为 .pro 文件中缺少 Qt += webkit

Posted

技术标签:

【中文标题】使用 QWebview 会产生编译错误,但不是因为 .pro 文件中缺少 Qt += webkit【英文标题】:Using QWebview gives compiling errors, but not because Qt += webkit is missing from the .pro file 【发布时间】:2014-05-11 01:25:45 【问题描述】:

我在 Qt 中创建了一个项目并向其中添加了一个 QWebview,然后我将 Qt += webkit 添加到了 .pro 文件中。但是,在编译时,我得到了这些错误:

...ui_mainwindow.h:42: error: undefined reference to `_imp___ZN8QWebViewC1EP7QWidget'
...ui_mainwindow.h:45: error: undefined reference to `_imp___ZN8QWebView6setUrlERK4QUrl'

错误参考这里(ui_mainwindow.h):

...
    webView = new QWebView(centralWidget); // <-- First error here
    webView->setObjectName(QStringLiteral("webView"));
    webView->setGeometry(QRect(0, 0, 300, 200));
    webView->setUrl(QUrl(QStringLiteral("about:blank"))); // <-- Second error here
    MainWindow->setCentralWidget(centralWidget);
...

在 Program.pro 中:

QT       += core gui webkit

我认为这些错误通常在没有Qt += webkit 的情况下发生,但在这种情况下,情况并非如此。

【问题讨论】:

【参考方案1】:

...ui_mainwindow.h:42: 错误:未定义对 `_imp___ZN8QWebViewC1EP7QWidget' 的引用

链接器没有找到 webview 小部件符号。

我认为这些错误通常在没有 Qt += webkit 的情况下发生,但在这种情况下,情况并非如此。

没错,但是 QtWebkit 模块在 Qt 5 中被拆分为 webkit 和 webkitwidgets,因为这些小部件在 Qt 5 中通常被移动到它们单独的模块中,因为构建 UI 的方式是 QtQuick 作为推广。

要解决此问题,您需要将其写入项目文件中:

QT = webkit webkitwidgets

请注意,没有必要明确使用coregui 模块,因为它们是默认添加的。另外,请确保您也安装了 webkitwidgets 模块,否则即使上述内容也不够。

【讨论】:

【参考方案2】:

在 Qt 5 中,他们引入了一些不仅仅是 webkit:

尝试放入 .pro 文件:Qt += core gui webkit widgets webkitwidgets

希望对您有所帮助。

【讨论】:

以上是关于使用 QWebview 会产生编译错误,但不是因为 .pro 文件中缺少 Qt += webkit的主要内容,如果未能解决你的问题,请参考以下文章

QWebView使用

为什么将短变量赋值给Integer引用会产生编译时错误?

QWebView 类是不是在 Qt 5.0.0 中工作?

QTextBrowser 还是 QWebView?

如何在 QWebview 中显示本地 HTML?

项目在 XCode 中编译,但 XCodeBuild 产生错误“No architectures ...”