使用 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
请注意,没有必要明确使用core
和gui
模块,因为它们是默认添加的。另外,请确保您也安装了 webkitwidgets 模块,否则即使上述内容也不够。
【讨论】:
【参考方案2】:在 Qt 5 中,他们引入了一些不仅仅是 webkit:
尝试放入 .pro 文件:Qt += core gui webkit widgets webkitwidgets
希望对您有所帮助。
【讨论】:
以上是关于使用 QWebview 会产生编译错误,但不是因为 .pro 文件中缺少 Qt += webkit的主要内容,如果未能解决你的问题,请参考以下文章