这是去年的一个项目,虽然研究出来了,解了一时之需,但随后束之高阁。当时Qt的版本是4.8。现在整理如下:
把QT HTML5 APP改造成 QML App 方案
新建一个QML自定义控件,该控件包含QT Webview, 然后由QT WebWiew 的负责Javasript和C++的交互。
新建一个QML自定义控件
import QtQuick 1.0 import MyWebView 1.0
Rectangle { width: 800 height: 480
MyWebView{
} } |
MyWebView.h
#ifndef MYWEBVIEW_H #define MYWEBVIEW_H
#include <QtDeclarative/QDeclarativeExtensionPlugin> #include <QtDeclarative/qdeclarative.h> #include <QtGui/QGraphicsProxyWidget> #include <QtGui/QPushButton> #include <QDebug> #include <QtWebKit/QWebView> #include <QtWebKit/QWebFrame>
class MyWebView : public QGraphicsProxyWidget { Q_OBJECT public: explicit MyWebView(QGraphicsProxyWidget *parent = 0); ~MyWebView();
signals:
public slots:
private slots: void addToJavaScript();
private: QWebView* m_pWebView;
Adapter* m_pAdapter;
bool event(QEvent*);
}; #endif // MYWEBVIEW_H |
注册用户控件
#ifndef VIEW_H #define VIEW_H
#include <QtCore/qglobal.h>
#if defined(VIEW_LIBRARY) # define VIEWSHARED_EXPORT Q_DECL_EXPORT #else # define VIEWSHARED_EXPORT Q_DECL_IMPORT #endif
int VIEWSHARED_EXPORT RegisterView();
#endif // VIEW_H
int RegisterView() { int iType = qmlRegisterType<MyWebView>("MyWebView", 1, 0, "MyWebView"); qDebug ("qmlRegisterType = %d",iType); return iType; } |