Qt QWebKit模块似的Qt Widget能通过Html的object标签嵌入到web页面中

首先 要了解 QWebPluginFactory 类,主要了解这两个方法:

virtual QObject * create ( const QString & mimeType, const QUrl & url, const QStringList & argumentNames, const QStringList & argumentValues ) const = 0
virtual QList<Plugin> plugins () const = 0

首先继承并实现QWebPluginFactory类


首先继承并实现QWebPluginFactory类:
class MyPlugin: public QWebPluginFactory  
{  
  Q_OBJECT  
public:  
  MyPlugin(QObject* parent = 0);  
  // 当QtWebkit模块解析到HTML中的object标签时被调用  
  virtual QObject* create(const QString& mimeType,  
                          const QUrl& url,  
                          const QStringList& argumentNames,  
                          const QStringList& argumentValues) const;  
  // 返回该factory支持的plugin  
 virtual QList<Plugin> plugins() const;  
};  
 
MyPlugin::MyPlugin(QObject* parent)  
  : QWebPluginFactory(parent)  
{  
  // do nothing  
}  
QObject* MyPlugin::create(const QString& mimeType,  
                          const QUrl& url,  
                          const QStringList& argumentNames,  
                          const QStringList& argumentValues) const  
{  
  QLabel* label = new QLabel(url.toString());  
  return label;  
}  
 
QList MyPlugin::plugins() const  
{  
  QList list;  
  QWebPluginFactory::Plugin entry;  
  entry.name = "plugin名";  
  entry.description = "描述";  
  list.push_back(entry);  
  return list;  
}
然后将其嵌入到HTML页面中:
<html>  
<head><title>test</title></head>  
<body>  
<object type="application/zxz-plugin" data="http://blog.csdn.net/zhu_xz" width="200" height="100"  id="myLabel"></object>  
</body>  
</html>


最后,在Qt代码中加载并显示该页面:

QWebView view;  
view.settings()->setAttribute(QWebSettings::PluginsEnabled,  true );  
view.page()->setPluginFactory( new  MyPlugin);  
view.load(QUrl( "test.html" ));  
view.show();

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用[1]: 这段代码是一个使用QT框架开发的Windows应用程序的示例。它使用了QApplication和QLabel类来创建一个简单的窗口,并在窗口显示一段文本。通过调用app.exec()来启动应用程序的事件循环,使窗口能够响应用户的操作。[1] 引用[2]: 在QT5.8,如果你想开发一个浏览器并调用电脑安装的插件软件,你可以使用QWebkit。其一种方法是使用dumpcpp工具生成插件的QActive类库文件,然后创建一个QWidget来包裹这个QActiveX类,并重新实现其的槽函数。最后,使用QWebPage::createPlugin()函数来创建自定义的浏览器插件来调用这个新建的QWidget。然而,这种方法可能会导致图层问题,即调用的插件会一直在网页图层的顶层且无法改变。为了解决这个问题,可以使用QRegion::setMask函数来勉强解决。但是,这种方法比较麻烦,还需要修改网页的js文件,因此比较繁琐。[2] 引用[3]: 在配置QT5.8时,可以使用以下命令:./configure -release -opensource -confirm-license -prefix /opt/Qt-5.8.0-x86 -xplatform linux-g -32 -nomake -examples -nomake -tests。这个命令将配置QT5.8的编译选项,包括使用开源和商业许可证、指定安装路径、选择平台、禁用示例和测试等。[3] 问题: QT5.8 webkit的使用方法是什么? 回答: 在QT5.8,你可以使用QWebkit来开发浏览器应用程序并调用电脑安装的插件软件。一种方法是使用dumpcpp工具生成插件的QActive类库文件,然后创建一个QWidget来包裹这个QActiveX类,并重新实现其的槽函数。最后,使用QWebPage::createPlugin()函数来创建自定义的浏览器插件来调用这个新建的QWidget。然而,这种方法可能会导致图层问题,即调用的插件会一直在网页图层的顶层且无法改变。为了解决这个问题,可以使用QRegion::setMask函数来勉强解决。但是,这种方法比较麻烦,还需要修改网页的js文件,因此比较繁琐。[2]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值