• QT使用插件QAxWidget来展示web页面


    要求:用qt版开发一个桌面程序,该程序有一个界面,用来显示一个采用silverlight开发的web页面。

    分析:在qt中实现web显示,根据qt的版本和对应编译器的版本,有如下选择:
    (1)5.6以下的版本,基于QtWebkit
    (2)5.6以上的MSVC版本,移除了QtWebkit 模块,可采用基于 Chromium 的浏览器引擎 Qt WebEngine
    (3)5.6以上的mingw 版本,没有Qt WebEngine ,只能采用QAxWidget 控件

    问题:用QtWebkit或Qt WebEngine,都不支持silverlight ,而QAxWidget 可以。
    所以,不得不采用QAxWidget控件实现。

    下面就使用QAxWidget来开发一个简单的web browser。该程序只有一个对话框,上面是一个地址框,下面是QAxWidget控件,在地址框中输入地址,单击Enter键,就显示该网址的内容。

    1 在qtcreator中新建一个基于Dialog的程序:WebBrowser。
    这里写图片描述

    2 在.pro文件中加入axcontainer

    QT +=  axcontainer
    

    3 dialog.h

    #ifndef DIALOG_H
    #define DIALOG_H
    
    #include <QDialog>
    #include <QLineEdit>
    #include <ActiveQt/QAxWidget>
    
    namespace Ui {
    class Dialog;
    }
    
    class Dialog : public QDialog
    {
      Q_OBJECT
    
    public:
      explicit Dialog(QWidget *parent = 0);
      ~Dialog();
    
    private slots:
      void loadNavigate();
    
    private:
      Ui::Dialog *ui;
      QLineEdit *lineUrl;
      QAxWidget* webWidget;
    };
    
    #endif // DIALOG_H
    

    4 dialog.cpp

    #include "dialog.h"
    #include "ui_dialog.h"
    #include <QVBoxLayout>
    
    Dialog::Dialog(QWidget *parent) :
      QDialog(parent),
      ui(new Ui::Dialog)
    {
      ui->setupUi(this);
    
      lineUrl = new QLineEdit;
      lineUrl->setText("www.baidu.com");
      connect(lineUrl,SIGNAL(returnPressed()),this,SLOT(loadNavigate()));
    
      webWidget = new QAxWidget;
      //设置ActiveX控件为IEMicrosoft Web Browser
      //设置ActiveX控件的id,最有效的方式就是使用UUID
      //此处的{8856F961-340A-11D0-A96B-00C04FD705A2}就是Microsoft Web Browser控件的UUID
      webWidget->setControl(QString::fromUtf8("{8856F961-340A-11D0-A96B-00C04FD705A2}")); 
      webWidget->setObjectName(QString::fromUtf8("webWidget"));//设置控件的名称
      webWidget->setFocusPolicy(Qt::StrongFocus);//设置控件接收键盘焦点的方式:鼠标单击、Tab键
      webWidget->setProperty("DisplayAlerts",false); //不显示任何警告信息。
      webWidget->setProperty("DisplayScrollBars",true); // 显示滚动条
    
      QVBoxLayout *mainLayout = new QVBoxLayout;
      mainLayout->addWidget(lineUrl);
      mainLayout->addWidget(webWidget);
      setLayout(mainLayout);
    
      setWindowState(Qt::WindowMaximized);//最大化
    }
    
    Dialog::~Dialog()
    {
      delete ui;
    }
    
    void Dialog::loadNavigate()
    {
      QString sUrl = lineUrl->text().trimmed();
      webWidget->dynamicCall("Navigate(const QString&)",sUrl);
    }
    

    5 运行结果
    这里写图片描述

  • 相关阅读:
    快速掌握麦肯锡的分析思维
    如何建立数据分析的思维框架
    《七周数据分析师》-万字总结
    装饰器
    迭代器&生成器
    Excel 怎样去掉单元格中的回车符号
    python面试题(一)
    Python基础5
    Python基础4
    Python enumerate() 函数
  • 原文地址:https://www.cnblogs.com/xiongxuanwen/p/6642280.html
Copyright © 2020-2023  润新知