LoginSignup
3
1

More than 1 year has passed since last update.

はじめてC++で画面を作ろう! (4) getOpenFileName編

Last updated at Posted at 2021-05-21

12.「ファイルを開く」を作ろう!!

[1] actionOpenに処理を書く
アクションエディタ画面より、「actionOpen」をクリック、続けてマウスの右ボタンをクリックすると、ポップアップ メニューが表示されるので、「スロットへ移動」をクリックします。

QAction trggered()をタプルクリックすると、自動的にC++のエディタに移動します。

mainwindow.cpp
#include "mainwindow.h"
#include "./ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
  ...中略...

void MainWindow::on_actionOpen_triggered()
{

}

on_actionOpen_triggered()関数にカーソルが移動しています。

[2] QFileDialogをインクルード!
今回は、「ファイルを開く」の画面を呼び出すので、準備作業として、
Qt5のQFileDialogを先に#Inculudeしておきます。

mainwindow.cpp
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QFileDialog> /* これを追加 */

MainWindow::MainWindow(QWidget *parent)
  ...中略...

void MainWindow::on_actionOpen_triggered()
{

}

[3] ファイル名の変数を用意
次にファイル名を入れる変数を用意します。
Qt5の文字列型の変数 (変数名:fileName)

※注意: Qt5用のQString型は、C++の標準 String型を拡張したモノ

mainwindow.cpp
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QFileDialog>

MainWindow::MainWindow(QWidget *parent)
  ...中略...

void MainWindow::on_actionOpen_triggered()
{
  QString fileName; /* これを追加 */
}

[4] 「ファイルを開く」画面を呼び出す
次に用意した変数に「ファイルを開く」画面の戻り値を入れます。

mainwindow.cpp
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QFileDialog>

MainWindow::MainWindow(QWidget *parent)
  ...中略...

void MainWindow::on_actionOpen_triggered()
{
  QString fileName = QFileDialog::getOpenFileName(this, tr("Open"), "", tr("Text File(*.txt);;All Files(*.*)"));
}

[5] ステータスバーに表示する
せっかく、戻り値で、ファイル名を取得したので、とりあえずステータスバーに表示しましょう!!

mainwindow.cpp
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QFileDialog>

MainWindow::MainWindow(QWidget *parent)
  ...中略...

void MainWindow::on_actionOpen_triggered()
{
  QString fileName = QFileDialog::getOpenFileName(this, tr("Open"), "", tr("Text File(*.txt);;All Files(*.*)"));
  ui->statusbar->showMessage(fileName); /* これを追加 */
}

13.動作確認!!

画面の左下にある、右三角マークの「実行」ボタンをクリックすると、何やら右下側にビルドしている状況が表示され、「MainWindow」が出てくる!

作ったアプリのメニューで、[File | Open]で、「ファイルを開く」画面が動く事をを確認しましょう!!

「ファイルを開く」画面で、「キャンセル」ボタンをクリックすると、fileName = ""となる。

14.getOpenFileName関数の引数の説明

[1] this :ここは、親オブジェクトの設定
[2] tr("Open") :ここは、「ファイルを開く」のタイトル
[3] "" :ここは、画面を呼び出した時のファイルパス
「マイ ドキュメント」などを設定できる。
[4] tr("Text File( *.txt );;All Files( * . * )") :ここは、拡張子のフィルター
フィルターは、セミコロン(;)を二つで区切りする
Text File( *.txt *.xml *.json )のように複数にもできる。
画像の場合は、Image File( *.jpg *.png *.gif *.tiff )のように設定できる。

今回は、ここまで次回は、「名前を付けて保存」を作ろう!!です。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1