QT使用插件QAxWidget來展現web頁面

要求:用qt版開發一個桌面程序,該程序有一個界面,用來顯示一個採用silverlight開發的web頁面。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控件實現。ui

下面就使用QAxWidget來開發一個簡單的web browser。該程序只有一個對話框,上面是一個地址框,下面是QAxWidget控件,在地址框中輸入地址,單擊Enter鍵,就顯示該網址的內容。this

1 在qtcreator中新建一個基於Dialog的程序:WebBrowser。
這裏寫圖片描述spa

2 在.pro文件中加入axcontainercode

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.cppci

#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 運行結果
這裏寫圖片描述開發

相關文章
相關標籤/搜索