ちょっとした画像処理などのプログラムを書くなどでファイルの入出力を行うとき、入出力のファイル名をプログラムに打ちなおしたり、実行ファイルの引数で与えてあげるというのも面倒なものです。
こういった場合、ファイルダイアログなんかが使えるとファイル名の指定をGUIで行えるのでかなりトライアンドエラーがやりやすくなり、作業効率がアップします。
ということで、簡単に作れるQtのファイルダイアログの使用例を紹介しようと思います。Qtはコンソールアプリケーションでも使えるのでちょっと簡単な実験を行いたいときなんかにもすぐに実装できます。
例えば、次の例はファイルオープン用のダイアログとファイルセーブ用のダイアログを順に出して、それぞれで取得したファイル名をコンソールに表示するプログラムです。
最初の
QApplication app(argc, argv);
はQtの初期化のために書いています。これを書かないとQtの関数やクラスは正常に動作しません。
それを除けばわずか1行でファイル名取得がファイルダイアログを通してできるのですごく使いやすいです。
ちなみにファイルフォーマットフィルタをかけるには次のようにします。
私はコンソールアプリケーションで機能テストを行うときなんかは重宝しています。
普段、ファイルの入出力をよくやるという方は是非導入してみて下さい。
こういった場合、ファイルダイアログなんかが使えるとファイル名の指定をGUIで行えるのでかなりトライアンドエラーがやりやすくなり、作業効率がアップします。
ということで、簡単に作れるQtのファイルダイアログの使用例を紹介しようと思います。Qtはコンソールアプリケーションでも使えるのでちょっと簡単な実験を行いたいときなんかにもすぐに実装できます。
例えば、次の例はファイルオープン用のダイアログとファイルセーブ用のダイアログを順に出して、それぞれで取得したファイル名をコンソールに表示するプログラムです。
#include <QApplication>
int main(int argc, char *argv[]){
QApplication app(argc, argv);
QString file;
// open dialog
file=QFileDialog::getOpenFileName(NULL, QString("Open File"), QDir::currentPath());
printf("%s\n", file.toLatin1().data());
// save dialog
file=QFileDialog::getSaveFileName(NULL, QString("Save As"), QDir::currentPath());
printf("%s\n", file.toLatin1().data());
return 0;
}
int main(int argc, char *argv[]){
QApplication app(argc, argv);
QString file;
// open dialog
file=QFileDialog::getOpenFileName(NULL, QString("Open File"), QDir::currentPath());
printf("%s\n", file.toLatin1().data());
// save dialog
file=QFileDialog::getSaveFileName(NULL, QString("Save As"), QDir::currentPath());
printf("%s\n", file.toLatin1().data());
return 0;
}
最初の
QApplication app(argc, argv);
はQtの初期化のために書いています。これを書かないとQtの関数やクラスは正常に動作しません。
それを除けばわずか1行でファイル名取得がファイルダイアログを通してできるのですごく使いやすいです。
ちなみにファイルフォーマットフィルタをかけるには次のようにします。
QString filter=QString("Image files (*.bmp *.gif *.jpg *png *.pgm *.ppm *tif *xbm *xpm);;BMP (*.bmp);;GIF (*.gif);;JPG (*.jpg);;PNG (*.png);;PGM (*.pgm);;PPM (*.ppm);;TIFF (*.tif);;XBM (*.xbm);;XPM (*.xpm);;All files (*)");
QString file=QFileDialog::getOpenFileName(NULL, QString("Open File"), QDir::currentPath(), filter);
QString file=QFileDialog::getOpenFileName(NULL, QString("Open File"), QDir::currentPath(), filter);
私はコンソールアプリケーションで機能テストを行うときなんかは重宝しています。
普段、ファイルの入出力をよくやるという方は是非導入してみて下さい。