ダイアログの種類用意されているダイアログ
ファイル・フォルダ選択QFileDialogについて
用途別に関数が用意されています。
[書式] 見出し(拡張子1 拡張子2…)[;;見出し(拡張子1…)] 例えば:すべて(*.*);;音声(*.wav *.wma *.mp3);;動画(*.wmv *.avi)
![]() 通常はシンボリックリンクを解釈するので、 リンク先のファイルまたはフォルダを選択したことになります。 ファイルを開く (getOpenFileName)
ファイルとフォルダの一覧を表示します。ファイルを1つ選択できます。
[書式] 親, タイトル, パス, フィルター, 選択フィルター, オプション 初期表示として、パス(場所)が"C:/Qt/Qt5.3.2"で、フィルターは2番目のテキストを表示します。 ※fileNameには選択したファイル名がフルパスで入ります。 キャンセルした時はEmpty状態になります。※selFilterには選択したフィルターが入ります。キャンセルした時は元のままになります。 ![]() ※フィルター欄は表示されません。 名前を付けて保存 (getSaveFileName)
ファイルを1つ選択できます。既存ファイルの場合は上書きの確認メッセージが出ます。
[書式] 親, タイトル, パス, フィルター, 選択フィルター, オプション パスにカレントディレクトリを指定すると、プロジェクトのビルドディレクトリを初期表示します。 ※fileNameには選択したファイル名がフルパスで入ります。 キャンセルした時はEmpty状態になります。※selFilterには選択したフィルターが入ります。キャンセルした時は元のままになります。 ※selFilterに何も指定しないので、フィルターの初期表示は最初のTIFFになります。 ※既存のファイルを選択すると、上書き確認メッセージが表示されます。 ![]() ※フィルター欄は表示されます。既存ファイルの上書き確認メッセージも表示されます。 フォルダ選択 (getExistingDirectory)
フォルダの一覧を表示します。フォルダを1つ選択できます。
[書式] 親, タイトル, パス, オプション オプションにShowDirsOnlyを指定してフォルダだけ表示します。 ※dirNameには選択したフォルダ名がフルパスで入ります。 キャンセルした時はEmpty状態になります。次のメッセージに対応するため、オプションにHideNameFilterDetailsを指定しています。 selectNameFilter: Invalid parameter 'Directories' not found in 'All Files (*)'. オプションにDontUseNativeDialogを指定すると、右側のダイアログになります。![]() 色選択QColorDialogについて
RGBを10進または16進で入力できる色選択ダイアログです。
getColor関数はQt標準の色選択ダイアログを表示します。
[書式] 色, 親, タイトル, オプション 初期表示は青で透明度も指定します。 ※colorには選択した色の情報が入ります。キャンセルした時はValidがfalseになります。※色は#AARRGGBB形式の他に#RRGGBB形式やQt定義色(Qt::redなど)でも指定できます。 ※透明度(AA)を省略するとアルファチャンネルの初期値は255になります。 ※ShowAlphaChannelを指定しないと、AAに初期値を指定しても戻り値は固定でff(255)になります。
![]() フォント選択QFontDialogについて
フォントを選択できるダイアログです。
getFont関数はQt標準のフォント選択ダイアログを表示します。
[書式1] 結果, 初期フォント, 親, タイトル, オプション ※Escキーを押すとウインドウを閉じることができます。これはキャンセルに相当します。
※スケーラブルフォントは拡大縮小しても精度の変わらないフォントです。 オプションにNoButtonsを指定するとボタンが表示されなくなります。 理由は分かりませんが、ウインドウ右上の閉じるボタンが使えなくなっています。 ![]() ※使えるフォントをアルファベット順に並べて、その先頭が選択された状態になります。 インプットボックスQInputDialogについて
インプットボックスには入力データの種類別に関数が用意されています。
その後に関数ごとの引数が続き、最後に結果を入れる変数を指定します。 [書式] 親, タイトル, 表示文字列, ・・・, 結果 ※引数にウインドウフラグと入力ヒントがありますが、ここでは省略しています。※必須の引数だけでもダイアログを表示できますが、結果を確認したほうが安全です。 浮動小数点数の入力 (getDouble)
getDouble関数は浮動小数点数のインプットボックスを表示します。
[書式] 親, タイトル, 表示文字列, 初期値, 最小値, 最大値, 小数部の桁数, 結果 例として、初期値37.56で、-10000から10000の範囲の浮動小数点数を入力します。 ※初期値の小数部は2桁ですが4桁の37.5600が表示されます。※キャンセルするとokはfalseになります。 ※dDataには入力した浮動小数点数が入ります。キャンセルすると初期値の37.56になります。 ※スピンボタンは整数部を増減します。 整数の入力 (getInt)
getInt関数は整数のインプットボックスを表示します。
[書式]親, タイトル, 表示文字列, 初期値, 最小値, 最大値, 増減値, 結果 例として、初期値25で、0から100の範囲の整数を入力します。 ※キャンセルするとokはfalseになります。※iDataには入力した整数が入ります。キャンセルすると初期値の25になります。 ※スピンボタンを1回押すごとに、増減値の1ずつ増減します。 アイテムの入力 (getItem)
getItem関数はコンボボックス形式の選択/編集インプットボックスを表示します。
[書式]親, タイトル, 表示文字列, リスト, 初期位置, 編集, 結果 例として、初期値"Spring"(位置=0)で 編集可能なコンボボックスのダイアログを表示します。 ※キャンセルするとokはfalseになります。※itemには選択または入力したテキストが入ります。 キャンセルすると初期値の"Spring"になります。 複数行テキストの入力 (getMultiLineText)
getMultiLineText関数は複数行のプレーンテキストのインプットボックスを表示します。
[書式]親, タイトル, 表示文字列, テキスト, 結果 例として、初期値が"東京都\n新宿区百人町"で 複数行テキストのダイアログを表示します。 ※キャンセルするとokはfalseになります。※textには入力した文字列が改行コードも含めて入ります。 キャンセルすると空("")になります。 テキストの入力 (getText)
getText関数はテキストのインプットボックスを表示します。
[書式]親, タイトル, 表示文字列, エコーモード, テキスト, 結果 例として、初期値をホーム名(QDir::home().dirName())にして テキストのダイアログを表示します。 ※キャンセルするとokはfalseになります。※textには入力した文字列が入ります。キャンセルすると空("")になります。
プログレスバーQProgressDialogについて
時間のかかる処理の経過を割合で表示します。
モードレスダイアログは多分使わないと思うので、モーダルしかテストしていません。 最後の引数はウインドウフラグですが、指定しないので省略しています。
[書式1] 親 ※wasCanceledで調べて、キャンセルされた場合はループから抜け出します。 ※時間のかかる処理を思い付かなかったので、取りあえず時間稼ぎのSleepを入れました。 ※スリープ中の500ミリ秒は何も受け付けなくなるので、 マウスやキーに対する反応が鈍くなります。 ※最後にプログレスバーに200をセットして100%にしています。 ![]() 印刷ダイアログ印刷について
印刷に関してはいろいろな支援クラスがあり、使用する場合は次の指定が必要です。
#include <QtPrintSupport> また、プロジェクトファイル(.pro)にモジュールの追加が必要です。QT += core gui printsupport
ページ設定などは印刷ダイアログに組み込まれています。 ![]() テキスト印刷
文字の印刷はQTextDocumentを使うと簡単です。
※QTextEditなどはQTextDocumentを取得できるので、テキストをセットする手間が省けます。
画像印刷
画像の縦横比を崩さずに、できるだけ大きなサイズでimage.jpgを印刷します。
※印刷領域の幅と高さから、縦横比を崩さずに画像が収まるサイズを求めます。
※求めたサイズで印刷領域の幅と高さを変更しておきます。 ※描画領域を画像サイズにしてから画像を描けば、 自動的にサイズ調整と印刷領域への転送が行われます。 ※setViewportで印刷領域のサイズを変更しておかないと縦横比が崩れます。 ※setWindowで描画領域のサイズを変更しておかないと小さな絵になります。 ウィジェット印刷
縦横比を崩さずに幅200pxでwidgetを印刷します。
※grabでwidgetのpixmapを取得します。widgetの子要素も含まれます。
※pixmapの幅を200pxにして描画します。高さは幅に合わせて伸縮します。 印刷プレビュー
用紙にA4縦を指定して印刷プレビューを表示します。
実際の描画はredrawPreview関数で行います。
※用紙のサイズと向きはプレビュー画面で設定できるので省略可能です。
※プレビュー画面のサイズを指定しないと、とても小さな表示になります。 ※設定変更による描画要求シグナルには、redrawPreview関数を接続します。 ※execでプレビュー画面が表示されます。画面を閉じるまで制御が戻りません。 描画関数はヘッダーのスロットで宣言します。 例として、メインウインドウのハードコピーを印刷プレビューに表示します。 ※pixmapの取得以外は画像印刷と同じです。 用紙全体がプレビュー画面に収まるように縮小表示されます。 ページ設定画面を開いて用紙の向きを変えると伸縮率が変化します。 ![]() メッセージボックスQMessageBoxについて
メッセージを表示します。概要説明ウインドウとしても使えます。
単純なメッセージ表示
シンプルにメッセージを表示する方法です。
[書式] 親, タイトル, 表示文字列, ボタン, デフォルト 状況に応じて次の4種類を使い分けます。 ※buttonには、QMessageBox::Yesか、QMessageBox::Noのどちらかが入ります。 questionはボタンを指定しなくてもYesとNoが表示されます。question以外はアイコンが違うだけです。 ![]() 確認メッセージ表示
複数のボタンを表示して選択されたボタンを返します。
書式1は最初の3つの引数が必須です。書式2は必要な情報を後で指定します。
[書式1] アイコン, タイトル, 表示文字列, ボタン, 親 ※引数なしでもダイアログの表示はできますが、多分使い道がないと思います。 書式1の形式で確認メッセージを表示します。 ※execでメッセージボックスを表示します。ダイアログを閉じるまで制御が戻りません。 ※buttonには3つのボタンのどれかが入ります。 ![]() ※ボタンの文字に賛成/反対/戻るを指定していますが、書式1でも同様に指定できます。 ※setInformativeTextは、Windowsでは使い道がなさそうなので触れません。 ボタンについて
いろいろなボタンが用意されています。
![]()
1. ResetRole (Reset, RestoreDefaults)
![]() ※標準ボタンには意味があって、それに応じた使い方をする必要があるようです。 ※選択肢が複数ある時、標準ボタンに選択項目を適当に割り振るのは間違った使い方のようです。 プッシュボタン追加
メッセージボックスに任意のプッシュボタンを追加します。
※任意のプッシュボタンでも、役割とセットで指定する必要があります。
概要ダイアログ
Qtについての概要を表示します。
※ライセンスなどの情報らしいですが、すべて英語なので・・・。
![]() カスタムダイアログQDialogについて
自由にレイアウトできるダイアログウインドウです。
メール送信用のダイアログを表示します。
※これは表示テスト用なので、見た目と結果の取得しか対応していません。
※Okボタンを選択するとacceptedシグナルが発行されます。 ※Cancelボタンを選択するとrejectedシグナルが発行されます。 ※それぞれのスロット関数は用意されているので、 何もしなくても1または0の結果を返します。 ※サイズグリップは表示されませんが、ウインドウのサイズは自由に変更できます。 ![]() ※各ボタンにはプロパティを設定してボタン番号を入れます。buttonNoは任意の名前です。 ※グリッドの余白がうまく設定できなかったので、3行目に空白行を入れて調整しています。 ※すべてのボタンのクリックイベントはexitDialog関数で処理します。 ※最小サイズと最大サイズを同じ値にしてダイアログのサイズを固定しています。 ※サイズグリップをオフにしてもサイズ変更不可にはなりません。 ※右上の×(閉じる)ボタンを押した時、buttonは0になります。 ヘッダーにスロット関数の宣言を入れます。 シグナルの送信元を調べて、ダイアログであれば閉じます。 ※送信元のウインドウがQDialogでなければ何もしません。 ※buttonNoプロパティの値を取り出して結果にセットします。 ※doneを実行すると、ダイアログを閉じてexecの戻り値に引数を渡します。 |
2016年12月
Copyright © 2016 dorafop All Rights Reserved.