Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@mususu644

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

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 )のように設定できる。

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

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?