欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用QWebEngine实现简单的浏览器

程序员文章站 2022-07-13 13:38:19
...
使用QWebEngine实现了一个简单的浏览器。
只有后退、前进、刷新功能,也不能说是实现,应该说是QWebEngine提供了该功能,这里仅仅调用而已。
经测试QWebEngine在Qt5.9.1版本下,貌似仅支持MSVC编译,不支持minGW和安卓方式。
界面如图。使用QWebEngine实现简单的浏览器
增加模块引用

QT       +=  webenginewidgets

控件布局:

 for(int i=0;i<5;i++)
        button[i] = new QPushButton;
    button[0]->setText("后退");
    button[1]->setText("前进");
    button[2]->setText("刷新");
    edit = new QLineEdit;
    edit->setText("http://www.baidu.com");

    hlayout = new QHBoxLayout;
    for(int i=0;i<5;i++)
        hlayout->addWidget(button[i]);
    hlayout->addWidget(edit);

    view = new QWebEngineView;
    view->load(QUrl(edit->text()));
    setWindowIcon(view->icon());


    glayout =new QGridLayout;
    glayout->addLayout(hlayout,0,0);
    glayout->addWidget(view);

    this->setLayout(glayout);


功能连接代码:

connect(button[0],&QPushButton::clicked,[=](){
        view->back();
    });//后退

    connect(button[1],&QPushButton::clicked,[=](){
        view->forward();
    });//前进

    connect(button[2],&QPushButton::clicked,[=](){
        view->load(view->url());
    });//刷新

    connect(edit,&QLineEdit::returnPressed,[=](){
        if(edit->text() == "")
            return;
        if(edit->text().indexOf("://") == -1)
            edit->setText("http://"+edit->text());
        view->load(QUrl(edit->text()));
    }); //回车跳转

    connect(view,&QWebEngineView::iconChanged,[=](){
        setWindowIcon(view->icon());
    });//网站图标被改变

    connect(view,&QWebEngineView::titleChanged,[=](){
        setWindowTitle(view->title());
    });//标题被改变

    connect(view,&QWebEngineView::urlChanged,[=](const QUrl& url) mutable {
        edit->setText(url.toString());
    });//网址被改变