您的位置:首页 > 编程语言 > Qt开发

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

2017-09-10 17:46 393 查看
要求:用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 运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: