首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从C++插件扩展现有的QML组件

从C++插件扩展现有的QML组件
EN

Ask Ubuntu用户
提问于 2013-10-07 15:16:52
回答 1查看 1.5K关注 0票数 1

首先,我想说我在Qt方面不是很有经验,但我想在现有的QML WebView组件中添加一个新特性,以设置一个标题值列表,包括用户代理头,在请求新的url时发送。执行它的方式,我认为是子类QWebView类(例如'MyWebView‘扩展QWebView),并注册该类

代码语言:javascript
复制
qmlRegisterType<MyWebView>(uri, 1, 0, "MyWebView");

我已经创建了一个名为MyApp的“+ Tabbed”应用程序来注册MyWebView类,当使用预创建的后端类进行编码时。到目前为止,我所做的唯一一件事就是以这种方式创建第一个方法.h文件:

代码语言:javascript
复制
#ifndef MYWEBVIEW_H
#define MYWEBVIEW_H

#include <QtWebKitWidgets/QWebView>

class MyWebView : public QWebView
{
    Q_OBJECT
public:
    explicit MyWebView(QWebView *parent = 0);
};

#endif // MYWEBVIEW_H

用这个.cpp

代码语言:javascript
复制
#include "mywebview.h"

MyWebView::MyWebView(QWebView *parent) :
    QWebView(parent)
{
}

我没有任何设备连接到我的笔记本电脑,所以我只使用Ringtail桌面发行版进行开发。对于这个额外添加的文件,编译工作,但是当我试图运行或调试项目时(至少查看默认的MyApp.qml工作状态),这些错误将显示如下:

启动/usr/lib/x86_64-linux-gnu/qt5 5/bin/qmlscene.file:///调试_路径/app/MyApp.qml:30类型不可用file:///调试_路径/app/ui/HelloTab.qml:3插件无法加载模块"MyApp":无法加载库调试_路径/backend/modules/MyApp/libMyApp.so:(调试_路径/backend/modules/MyApp/libMyApp.so:未定义符号:_ZN8QWebView16staticMetaObjectE)

所以我想..。有些东西配置不好吗?你知道发生了什么事吗?

我使用的Ubuntu版本是否可能是64位?为什么我要执行

代码语言:javascript
复制
ldd -r libMyApp.so

有些行可能会说WebKit类是未定义的:

代码语言:javascript
复制
    linux-vdso.so.1 =>  (0x00007ffffb5d1000)
    libQt5Qml.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Qml.so.5 (0x00007ff9e1baa000)
    libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007ff9e1595000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff9e1291000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff9e107b000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff9e0cb3000)
    libQt5Network.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Network.so.5 (0x00007ff9e097b000)
    libQt5V8.so.5 => /usr/lib/x86_64-linux-gnu/libQt5V8.so.5 (0x00007ff9e0337000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff9e0032000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff9dfe14000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff9dfbfd000)
    libicui18n.so.48 => /usr/lib/x86_64-linux-gnu/libicui18n.so.48 (0x00007ff9df837000)
    libicuuc.so.48 => /usr/lib/x86_64-linux-gnu/libicuuc.so.48 (0x00007ff9df4cb000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff9df2c7000)
    libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007ff9defcb000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ff9dedc2000)
    /lib64/ld-linux-x86-64.so.2 (0x00007ff9e2205000)
    libicudata.so.48 => /usr/lib/x86_64-linux-gnu/libicudata.so.48 (0x00007ff9dda52000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007ff9dd812000)
undefined symbol: _ZN8QWebView16staticMetaObjectE   (./libMyApp.so)
undefined symbol: _ZN8QWebView5eventEP6QEvent   (./libMyApp.so)
undefined symbol: _ZNK7QWidget7devTypeEv    (./libMyApp.so)
undefined symbol: _ZN7QWidget10setVisibleEb (./libMyApp.so)
undefined symbol: _ZNK8QWebView8sizeHintEv  (./libMyApp.so)
undefined symbol: _ZNK7QWidget15minimumSizeHintEv   (./libMyApp.so)
undefined symbol: _ZNK7QWidget14heightForWidthEi    (./libMyApp.so)
undefined symbol: _ZNK7QWidget17hasHeightForWidthEv (./libMyApp.so)
undefined symbol: _ZNK7QWidget11paintEngineEv   (./libMyApp.so)
undefined symbol: _ZN8QWebView15mousePressEventEP11QMouseEvent  (./libMyApp.so)
undefined symbol: _ZN8QWebView17mouseReleaseEventEP11QMouseEvent    (./libMyApp.so)
undefined symbol: _ZN8QWebView21mouseDoubleClickEventEP11QMouseEvent    (./libMyApp.so)
undefined symbol: _ZN8QWebView14mouseMoveEventEP11QMouseEvent   (./libMyApp.so)
undefined symbol: _ZN8QWebView10wheelEventEP11QWheelEvent   (./libMyApp.so)
undefined symbol: _ZN8QWebView13keyPressEventEP9QKeyEvent   (./libMyApp.so)
undefined symbol: _ZN8QWebView15keyReleaseEventEP9QKeyEvent (./libMyApp.so)
undefined symbol: _ZN8QWebView12focusInEventEP11QFocusEvent (./libMyApp.so)
undefined symbol: _ZN8QWebView13focusOutEventEP11QFocusEvent    (./libMyApp.so)
undefined symbol: _ZN7QWidget10enterEventEP6QEvent  (./libMyApp.so)
undefined symbol: _ZN7QWidget10leaveEventEP6QEvent  (./libMyApp.so)
undefined symbol: _ZN8QWebView10paintEventEP11QPaintEvent   (./libMyApp.so)
undefined symbol: _ZN7QWidget9moveEventEP10QMoveEvent   (./libMyApp.so)
undefined symbol: _ZN8QWebView11resizeEventEP12QResizeEvent (./libMyApp.so)
undefined symbol: _ZN7QWidget10closeEventEP11QCloseEvent    (./libMyApp.so)
undefined symbol: _ZN8QWebView16contextMenuEventEP17QContextMenuEvent   (./libMyApp.so)
undefined symbol: _ZN7QWidget11tabletEventEP12QTabletEvent  (./libMyApp.so)
undefined symbol: _ZN7QWidget11actionEventEP12QActionEvent  (./libMyApp.so)
undefined symbol: _ZN8QWebView14dragEnterEventEP15QDragEnterEvent   (./libMyApp.so)
undefined symbol: _ZN8QWebView13dragMoveEventEP14QDragMoveEvent (./libMyApp.so)
undefined symbol: _ZN8QWebView14dragLeaveEventEP15QDragLeaveEvent   (./libMyApp.so)
undefined symbol: _ZN8QWebView9dropEventEP10QDropEvent  (./libMyApp.so)
undefined symbol: _ZN7QWidget9showEventEP10QShowEvent   (./libMyApp.so)
undefined symbol: _ZN7QWidget9hideEventEP10QHideEvent   (./libMyApp.so)
undefined symbol: _ZN7QWidget11nativeEventERK10QByteArrayPvPl   (./libMyApp.so)
undefined symbol: _ZN8QWebView11changeEventEP6QEvent    (./libMyApp.so)
undefined symbol: _ZNK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE   (./libMyApp.so)
undefined symbol: _ZNK7QWidget11initPainterEP8QPainter  (./libMyApp.so)
undefined symbol: _ZNK7QWidget10redirectedEP6QPoint (./libMyApp.so)
undefined symbol: _ZNK7QWidget13sharedPainterEv (./libMyApp.so)
undefined symbol: _ZN8QWebView16inputMethodEventEP17QInputMethodEvent   (./libMyApp.so)
undefined symbol: _ZNK8QWebView16inputMethodQueryEN2Qt16InputMethodQueryE   (./libMyApp.so)
undefined symbol: _ZN8QWebView18focusNextPrevChildEb    (./libMyApp.so)
undefined symbol: _ZN8QWebView12createWindowEN8QWebPage13WebWindowTypeE (./libMyApp.so)
undefined symbol: _ZThn16_NK7QWidget7devTypeEv  (./libMyApp.so)
undefined symbol: _ZThn16_NK7QWidget11paintEngineEv (./libMyApp.so)
undefined symbol: _ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintDeviceMetricE (./libMyApp.so)
undefined symbol: _ZThn16_NK7QWidget11initPainterEP8QPainter    (./libMyApp.so)
undefined symbol: _ZThn16_NK7QWidget10redirectedEP6QPoint   (./libMyApp.so)
undefined symbol: _ZThn16_NK7QWidget13sharedPainterEv   (./libMyApp.so)
undefined symbol: _ZTI8QWebView (./libMyApp.so)
undefined symbol: _ZN8QWebPage16staticMetaObjectE   (./libMyApp.so)
undefined symbol: _ZN8QWebPage5eventEP6QEvent   (./libMyApp.so)
undefined symbol: _ZN8QWebPage13triggerActionENS_9WebActionEb   (./libMyApp.so)
undefined symbol: _ZN8QWebPage9extensionENS_9ExtensionEPKNS_15ExtensionOptionEPNS_15ExtensionReturnE    (./libMyApp.so)
undefined symbol: _ZNK8QWebPage17supportsExtensionENS_9ExtensionE   (./libMyApp.so)
undefined symbol: _ZN8QWebPage25shouldInterruptJavaScriptEv (./libMyApp.so)
undefined symbol: _ZN8QWebPage12createWindowENS_13WebWindowTypeE    (./libMyApp.so)
undefined symbol: _ZN8QWebPage12createPluginERK7QStringRK4QUrlRK11QStringListS8_    (./libMyApp.so)
undefined symbol: _ZN8QWebPage23acceptNavigationRequestEP9QWebFrameRK15QNetworkRequestNS_14NavigationTypeE  (./libMyApp.so)
undefined symbol: _ZN8QWebPage10chooseFileEP9QWebFrameRK7QString    (./libMyApp.so)
undefined symbol: _ZN8QWebPage15javaScriptAlertEP9QWebFrameRK7QString   (./libMyApp.so)
undefined symbol: _ZN8QWebPage17javaScriptConfirmEP9QWebFrameRK7QString (./libMyApp.so)
undefined symbol: _ZN8QWebPage16javaScriptPromptEP9QWebFrameRK7QStringS4_PS2_   (./libMyApp.so)
undefined symbol: _ZN8QWebPage24javaScriptConsoleMessageERK7QStringiS2_ (./libMyApp.so)
undefined symbol: _ZNK8QWebPage15userAgentForUrlERK4QUrl    (./libMyApp.so)
undefined symbol: _ZTI8QWebPage (./libMyApp.so)
undefined symbol: _ZN8QWebView11qt_metacastEPKc (./libMyApp.so)
undefined symbol: _ZN8QWebViewD2Ev  (./libMyApp.so)
undefined symbol: _ZN8QWebView11qt_metacallEN11QMetaObject4CallEiPPv    (./libMyApp.so)
undefined symbol: _ZN8QWebPage11qt_metacallEN11QMetaObject4CallEiPPv    (./libMyApp.so)
undefined symbol: _ZN8QWebViewC2EP7QWidget  (./libMyApp.so)
undefined symbol: _ZN8QWebPageD2Ev  (./libMyApp.so)
undefined symbol: _ZN8QWebPage11qt_metacastEPKc (./libMyApp.so)
undefined symbol: _ZN8QWebPageC2EP7QObject  (./libMyApp.so)
EN

回答 1

Ask Ubuntu用户

发布于 2013-10-24 14:36:27

解决方案是将这一行添加到后端模块中的MyApp.pro文件中。

代码语言:javascript
复制
QT += webkit webkitwidgets

我以前试过,但直到现在才起作用。为什么?。因为我并没有建议在每次构建项目时都会生成后端模块libMyApp.so文件.

更改MyApp.pro后,有必要删除此文件:

代码语言:javascript
复制
build-MyApp-Desktop-Debug/backend/modules/MyApp/libMyApp.so

通过这种方式,文件将再次生成,但webkit依赖项将得到解决。

票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/354895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档