MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Qtの基礎 - ダイアログのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Qtの基礎 - ダイアログ
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <br><br> == ダイアログの種類 == 下表に、Qtにおいて、標準で存在するダイアログの種類を示す。<br> <center> {| class="wikitable" style="background-color:#fefefe;" |- ! style="background-color:#00ffff;" | 用途 ! style="background-color:#00ffff;" | クラス名 |- | ファイル・ディレクトリ選択 || QFileDialog |- | 色選択 || QFontDialog |- | インプットボックス || QInputDialog |- | プログレスバー || QProgressDialog |- | 印刷関連 || QPrintDialog |- | メッセージボックス || QMessageBox |} </center> <br><br> == ファイル・ディレクトリ選択ダイアログ == ==== QFileDialogクラス ==== 下表に、用途別に<code>QFileDialog</code>のメソッドを示す。<br> <center> {| class="wikitable" style="background-color:#fefefe;" |- ! style="background-color:#00ffff;" | メソッド ! style="background-color:#00ffff;" | 用途 ! style="background-color:#00ffff;" | 戻り値 |- | getOpenFileName || ローカルファイル選択(開く) || QString |- | getOpenFileNames || 複数ローカルファイル選択(開く) || QStringList |- | getOpenFileUrl || リモートファイル選択(開く) || QUrl |- | getOpenFileUrls || 複数リモートファイル選択(開く) || QList<QUrl> |- | getSaveFileName || ローカルファイル選択(保存) || QString |- | getSaveFileUrl || リモートファイル選択(保存) || QUrl |- | getExistingDirectory || ローカルフォルダ選択 || QString |- | getExistingDirectoryUrl || リモートフォルダ選択 || QUrl |} </center> <br> フィルタを指定すると、拡張子で絞ってファイルを表示することができる。<br> # 書式フォーマット [書式];;見出し(拡張子1 拡張子2 ...) [;;見出し(拡張子1 ...)] # 例 すべて(*.*);;音声(*.wav *.wma *.mp3);;動画(*.wmv *.avi) <br> 下表に、<code>QFileDialog</code>クラスのオプションを示す。(enum QFileDialog::Option)<br> <center> {| class="wikitable" style="background-color:#fefefe;" |- ! style="background-color:#00ffff;" | 定義 ! style="background-color:#00ffff;" | 値 ! style="background-color:#00ffff;" | 説明 |- | ShowDirsOnly || 0x00000001 || フォルダのみ表示する。<br>(<code>FileMode</code>が<code>Directory</code>の時に有効) |- | DontResolveSymlinks || 0x00000002 || シンボリックリンクを解釈しない。<br>(指定しない場合、解釈する) |- | DontConfirmOverwrite || 0x00000004 || 既存ファイル選択時に確認画面を表示しない。<br>(指定しない場合、表示する) |- | DontUseNativeDialog || 0x00000010 || OS標準のダイアログを使用しない。<br>(指定しない場合、使用する) |- | ReadOnly || 0x00000020 || ReadOnlyを表示する。 |- | HideNameFilterDetails || 0x00000040 || ファイル名フィルタの詳細が隠されているか示す。 |- | DontUseCustomDirectoryIcons || 0x00000080 || ディレクトリのアイコンは常に標準のものを使用する。<br><u>ただし、カスタムアイコンを使用すると負荷が大きいため、<br>ディレクトリのアイコンは常に標準のものを使用した方がよい。</u> |} </center> <br> <u>※注意</u><br> <u>シンボリックリンク(ショートカット)を選択しても、ディレクトリ欄には表示されない。</u><br> <br> <u>また、DontResolveSymlinksを指定すると、シンボリックリンク(ショートカット)を選択した場合、エラーメッセージを出力する。</u><br> <u>指定しない場合、シンボリックリンク(ショートカット)を解釈するため、リンク先のファイルまたはディレクトリを選択したことになる。</u><br> <br> ==== ファイル選択ダイアログ ==== ===== ファイルを開く(getOpenFileNameメソッド) ===== ファイルとディレクトリの一覧を表示する。<br> getOpenFileNameメソッドは、ファイルを1つ選択できる。<br> # 書式フォーマット [書式] 親, タイトル, パス, フィルター, 選択フィルタ, オプション <br> 以下の例では、初期表示のパスを/home/<ユーザ名>、フィルタを2番目のフィルタ(*.txt)として表示する。<br> <code>getOpenFileName</code>メソッドの戻り値には、選択したファイル名がフルパスで代入される。(キャンセルした場合、空文字が代入される)<br> 変数<code>SelFilter</code>には、初期に選択するフィルターが入る。(キャンセルした場合、元のままになる)<br> <syntaxhighlight lang="c++"> QString SelFilter = tr("テキスト(*.txt)"); QString FileName = QFileDialog::getOpenFileName(this, tr("ファイルを開く"), "~/", tr("すべて(*.*);;テキスト(*.txt);;ソース(*.h *.cpp)"), &SelFilter, QFileDialog::DontUseCustomDirectoryIcons); if(FileName.isEmpty()) { // キャンセル // キャンセル処理を記述 } </syntaxhighlight> <br> また、引数を全て省略する場合、標準のダイアログが表示される。<br> 標準のダイアログとは、タイトルは"開く"、初期表示のパスは"実行ファイルが存在するディレクトリ"となる。<br> また、フィルタ欄は表示されない。<br> <syntaxhighlight lang="c++"> QString fileName = QFileDialog::getOpenFileName(); </syntaxhighlight> <br> ===== 名前を付けて保存(getSaveFileNameメソッド) ===== <code>getSaveFileName</code>メソッドを使用して、ファイルを1つ保存することができる。<br> 既に同じ名前のファイルが存在する場合、上書きの確認メッセージが表示される。<br> [書式] getSaveFileName(親ウインドウのポインタ, ダイアログのタイトル, 初期表示のパス, フィルタ, 選択フィルタ, オプション) <br> パスに<code>.(カレントディレクトリ)</code>を指定する時、実行ファイルが存在するディレクトリを表示する。<br> <code>getSaveFileName</code>メソッドの戻り値は、選択したファイル名のフルパスである。(キャンセルした場合、空文字となる)<br> 選択フィルタ(下例では、変数SelFilter)には、選択したフィルタが代入される。(キャンセルした場合、元のままとなる)<br> 選択フィルタ(下例では、変数SelFilter)を指定しない場合、フィルタの初期表示はフィルタの1つ目の要素(下例では、*.tif *.tiff)となる。<br> <syntaxhighlight lang="c++"> QString SelFilter = ""; QString FileName = QFileDialog::getSaveFileName(this, tr("名前を付けて保存"), ".", tr("TIFF image document(*.tif *.tiff);;Portable network graphic(*.png)"), &SelFilter, QFileDialog::DontUseCustomDirectoryIcons); if(FileName.isEmpty()) { // キャンセル // キャンセル処理を記述 } </syntaxhighlight> <br> <code>getSaveFileName</code>メソッドの引数を全て省略する時、標準のダイアログが表示される。<br> この時、ダイログのタイトルは"名前を付けて保存"、初期表示のパスは"実行ファイルが存在するディレクトリ"となる。<br> また、フィルタ欄と既存ファイルの上書き確認メッセージは表示される。<br> <syntaxhighlight lang="c++"> QString FileName = QFileDialog::getSaveFileName(); </syntaxhighlight> <br> ==== ディレクトリ選択ダイアログ(getExistingDirectoryメソッド) ==== <code>getExistingDirectory</code>メソッドを使用して、ディレクトリの一覧を表示する。<br> ディレクトリを1つ選択することができる。<br> # 書式フォーマット [書式] getExistingDirectory(親ウインドウのポインタ, ダイアログのタイトル, 初期表示のパス, オプション) <br> QFileDialog::Optionsにおいて、ShowDirsOnlyを指定することで、ディレクトリのみ表示することができる。<br> <code>getExistingDirectory</code>メソッドの戻り値は、選択したディレクトリ名のフルパスである。(キャンセルした場合、空文字となる)<br> また、以下のメッセージに対応するため、オプションにHideNameFilterDetailsを指定する。 selectNameFilter: Invalid parameter 'Directories' not found in 'All Files (*)'. <br> <syntaxhighlight lang="c++"> QFileDialog::Options options = QFileDialog::ShowDirsOnly | QFileDialog::HideNameFilterDetails | QFileDialog::DontUseCustomDirectoryIcons; QString DirName = QFileDialog::getExistingDirectory(this, tr("ディレクトリの選択"), "~/", options); if(DirName.isEmpty()) { // キャンセル // キャンセル処理を記述 } </syntaxhighlight> <br> また、オプションに<code>DontUseNativeDialog</code>を指定する時、下図に示すダイアログが表示される。<br> <br> <code>getExistingDirectory</code>メソッドの引数を全て省略する場合、標準のダイアログが表示される。<br> この時、タイトルは"フォルダーの選択"、初期表示のパスは"実行ファイルが存在するディレクトリ"となる。<br> <syntaxhighlight lang="c++"> QString DirName = QFileDialog::getExistingDirectory(); </syntaxhighlight> <br><br> == モーダルダイアログ == <syntaxhighlight lang="c++"> // mainwindow.cpp void MainWindow::OnBtnClicked() { ModalDialog ModalDlg; ModalDlg.setModal(true); ModalDlg.exec(); } </syntaxhighlight> <br><br> == モードレスダイアログ == <syntaxhighlight lang="c++"> // mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include "ModelessDialog.h" namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_pushButton_clicked(); private: Ui::MainWindow *ui; std::unique_ptr<ModelessDialog> ModelessDlg; }; #endif // MAINWINDOW_H </syntaxhighlight> <br> <syntaxhighlight lang="c++"> // mainwindow.cpp void MainWindow::OnBtnClicked() { ModelessDlg = std::make_unique<ModelessDialog>(this); ModelessDlg->show(); } </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:Qt]]
Qtの基礎 - ダイアログ
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse