使いやすい分割できるブラウザ-Qtsimplebrowser

2026年10月11日

初めに

複数の画面を分割できるブラウザがあまりないので作ってみました

このコードは Qt(Qt Widgets + QWebEngineView) で作られたマルチブラウザ です。

単なる「ブラウザ」ではなく、

  • メイン画面を1つ表示
  • サブ画面を最大12個表示
  • URL保存
  • お気に入り管理
  • 画面分割
  • ズーム
  • 設定保存(JSON)

ができる高機能ブラウザになっています。

画面全体の構成

+--------------------------------------------------+
| << > ! - + % 0 1 2 3 4 5 6 7 8 9 10 11 12       |
+--------------------------------------------------+
| URL入力欄                                       |
| 行[1] 列[2] 位置[右] 保存 ☆ ★                  |
+--------------------------------------------------+
|                                                  |
|               メイン画面                         |
|                                                  |
+--------------------------------------------------+
|               サブ画面群                         |
+--------------------------------------------------+

上段ボタンバー

<< ボタン

pushButton

ツールチップ

戻る

処理

void MainWindow::on_pushButton_clicked()

{

    ui->widget->back();

}

機能

ブラウザの戻る

例

Google
 ↓
Yahoo
 ↓
Bing

で Yahoo に戻る。

> ボタン

pushButton_2

処理

ui->widget->forward();

機能

進む

! ボタン

pushButton_3

処理

ui->widget->reload();

機能

ページ再読み込み

ブラウザのF5と同じ。

- ボタン

起動時に動的生成

btnZoomOut

処理

zoomOutMain();

機能

縮小

例

100%
↓
90%
↓
81%

+ ボタン

btnZoomIn

処理

zoomInMain();

機能

拡大

例

100%
↓
110%
↓
121%

% ボタン

btnZoomReset

処理

zoomResetMain();

機能

ズームを

100%

に戻す

0 ボタン

動的生成

btnSub0

処理

clearSubScreens();

機能

すべてのサブ画面を空にする

実際には

about:blank

を表示している。

1〜12 ボタン

例えば

btnSub1

btnSub2

…

btnSub12

役割

メイン画面で見ているページを

指定したサブ画面へ送る。

例

メイン画面

https://google.com

表示中

↓

3

ボタン押す

↓

サブ画面3に

https://google.com

表示

処理

sendToSub(i – 1);

例えば

ボタン5

sendToSub(4);

サブ画面5にコピー

URL入力欄

lineEdit

表示

URLを入力してEnter

使用方法

https://www.google.com

入力

↓

Enter

↓

ページ表示

処理

void MainWindow::on_lineEdit_returnPressed()

{

    ui->widget->load(QUrl(ui->lineEdit->text()));

}

行

spinRows

設定可能

1~12

意味

サブ画面の行数

例

1

なら

□ □ □

1行

3

なら

□ □
□ □
□ □

3行

列

spinCols

意味

サブ画面の列数

例

2列
□ □
□ □
4列
□ □ □ □

行×列

サブ画面数

例えば

行=3
列=2

なら

3×2=6画面

使えるのは

1~6ボタン

まで。

7以降は無効化される。

コード

btn->setEnabled(used);

位置

comboSubPos

プルダウン

右

+------------+------+
|            |      |
| メイン     |サブ |
|            |      |
+------------+------+

処理

Qt::Horizontal

下

+------------+
| メイン     |
+------------+
| サブ       |
+------------+

処理

Qt::Vertical

コード

m_splitter->setOrientation(…)

保存ボタン

btnSave

表示

保存

役割

現在状態をJSON保存

保存される内容

URL

行数

列数

右/下

ウィンドウ位置

ズーム率

サブ画面URL

スプリッタ位置

保存例

{

  “url":"https://google.com“,

  “subRows":2,

  “subCols":3,

  “subPosition":"right",

  “zoomFactor":1.2

}

☆ ボタン

btnFavSave

お気に入り登録

例

現在

https://youtube.com

表示中

↓

☆押す

↓

名前入力

YouTube

↓

保存

保存形式

{

  “name":"YouTube",

  “url":"https://youtube.com“

}

★ ボタン

btnFavLoad

お気に入り一覧表示

例

YouTube
Google
Yahoo
GitHub

選択

↓

開く

↓

ページ表示

メイン画面

widget

型

QWebEngineView

役割

普通のブラウザ画面

ここでサイトを見る

例えば

ui->widget->load(QUrl(“https://www.google.com“));

すると

Googleが表示される。

サブ画面領域

subContainer

中には

subView1

subView2

…

subView12

が入る。

生成箇所

createSubViews();

作成コード

QWebEngineView *view =

    new QWebEngineView(ui->subContainer);

合計

MaxSubScreens = 12

枚作られる。

サブ画面のズーム

非常に面白い機能です。

右配置

メイン | サブ

で

3行

なら

1.0 / 3

倍率

例えば

メイン

150%

なら

サブ

50%

になる

計算

ratio = 1.0 / rows;

下配置

メイン
-------
サブ

なら

列数で計算

ratio = 1.0 / cols;

スプリッター

中央の境界

m_splitter

ユーザーがドラッグ可能

メイン|サブ

の境界を動かせる。

設定保存

kSplitRatio

次回起動時

同じ割合で復元

JSON設定ファイル

デフォルト

Qtsimplebrowser.json

保存される項目

subRows

行数

subCols

列数

subPosition

右/下

url

メインURL

subUrls

サブ画面URL一覧

zoomFactor

ズーム率

windowGeometry

ウィンドウ位置とサイズ

splitRatio

スプリッター位置

favorites

お気に入り

ショートカットキー一覧

キー機能
Backspace戻る
Shift+Backspace進む
Ctrl++拡大
Ctrl+-縮小
Ctrl+0100%

このソフトの特徴

一般的なブラウザとの違いは

① 1つのURLを複数画面にコピーできる

メイン
↓
ボタン1
ボタン2
ボタン3

で3箇所同時表示

② 最大12画面

3×4

まで表示可能

③ 起動時完全復元

  • URL
  • サブ画面
  • ウィンドウ位置
  • ズーム率
  • 分割比率

すべて再現

コマンドライン指定

Qtsimplebrowser.exe Qtsimplebrowser.json

④ お気に入り管理付き

JSONだけで保存できるのでデータベース不要

⑤ メインとサブのズーム自動連動

updateSubZoom();

によってサブ画面サイズに合わせて自動縮小されるのが、このプログラムの一番特徴的な部分です。

バイナリー

Qt

Posted by eightban