eightban's memo

残しておきたい記事をまとめてみました。このブログに書いてあるドキュメントやブログで配布しているファイルの使用によって発生するいかなる損害に対してもこのブログの管理者は責任を負いません。使用する場合は自己責任のもとに使用してください。

C++ Qt

QtでシンプルなWebBrowserを作ってみる/Webブラウザ/ウェブブラウザ

更新日:

開発環境の構築

MaintenanceTool.exeを起動します

QWebEngineを追加します

作り方

qtcreator.exe 起動

create Project → Qt ウィジェットアプリケーション 選択

名前はQtsimplebrowser 

ビルドシステムは、qmake を選択

キットを選択 C++コンパイラはVC++(msvc)Qt 6.6

Qtsimplebrowser.pro 次の行を追加

QT += webenginewidgets

フォームmainwindow.ui

左のウィジェットの一覧から URL の入力欄として使用する「 "Line Edit"」と Web ページの表示に使用する「widget」をフォームに貼り付け。 LineEdit が widget よりも上部になるように置く。垂直に並べるボタンを押して整形します

widgetオブジェクトを右クリックして、「格上げ先」->「QWebEngineView」を選択して格上げする

格上げ先にQWebEngineViewが無ければ、「格上げ先を指定」を選択し「格上げされたクラス名」に「QWebEngineView」を入力し「格上げ」をクリック

[qt QLineEdit] を右クリックし、コンテキストメニューの中から「スロットへ移動」を選択してください。URLを入力しエンターキーを押した後に画面に表示されるようにreturnPressed を選びます

ソースに空の関数が追加されるので次のコードを追加します


void MainWindow::on_lineEdit_returnPressed()
{
    ui->widget->load(QUrl(ui->lineEdit->text()));

}

simplebrowser.ui を開き、今度は [qt QWebEngineView] を右クリックして 「Go to slot...」を選択します。

urlChangedを探してもないので次のように対応します。画面が変わった時にURLを変更させるためです

mainwindow.cpp


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connect(ui->widget, &QWebEngineView::urlChanged,  this,[this](const QUrl &url) {
            ui->lineEdit->setText(url.toDisplayString());
    });

}

とりあえず動きました

戻るボタン追加

デザインに戻る進む更新のボタンを追加します

[qt QpushButton] を右クリックし、コンテキストメニューの中から「スロットへ移動」を選択してください。ボタンをクリックすると画面が戻るようにするためclickedを選びます

他の2つのボタンを同様にします

次のコードを追加します


void MainWindow::on_pushButton_clicked()
{
    ui->widget->back();
}


void MainWindow::on_pushButton_2_clicked()
{
    ui->widget->forward();
}


void MainWindow::on_pushButton_3_clicked()
{
    ui->widget->reload();

}

キーボードのショートカットキーに対応させる

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QShortcut>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->widget, &QWebEngineView::urlChanged,  this,[this](const QUrl &url) {
        ui->lineEdit->setText(url.toDisplayString());
    });
    QShortcut *BacksC = new QShortcut(QKeySequence::Back, this);
    connect(BacksC, &QShortcut::activated, this, &MainWindow::on_pushButton_clicked);
    QShortcut *ForwardsC = new QShortcut(QKeySequence::Forward, this);
    connect(ForwardsC, &QShortcut::activated, this, &MainWindow::on_pushButton_2_clicked);
}

QShortcut Class | Qt Widgets 5.15.16

エラーは出ますが簡単なWebブラウザの作成の方法を紹介しました

-C++, Qt

Copyright© eightban's memo , 2024 All Rights Reserved Powered by STINGER.