「Qtの基礎 - ダイアログ」の版間の差分

ナビゲーションに移動 検索に移動
編集の要約なし
174行目: 174行目:
  <syntaxhighlight lang="c++">
  <syntaxhighlight lang="c++">
  QString DirName = QFileDialog::getExistingDirectory();
  QString DirName = QFileDialog::getExistingDirectory();
</syntaxhighlight>
<br><br>
== 色選択ダイアログ(QColorDialogクラス) ==
RGBを10進または16進で入力できる色選択ダイアログである。<br>
<br>
<code>getColor</code>メソッドを使用すると、Qt標準の色選択ダイアログを表示する。<br>
[書式] getColor(色, 親ウインドウのポインタ, ダイアログのタイトル, オプション)
<br>
以下の例では、初期表示として、青で透明度を指定している。<br>
<br>
<code>getColor</code>メソッドの戻り値は、選択した色情報クラスである。(キャンセルした場合、Validがfalseになる)<br>
色は、#AARRGGBB形式、#RRGGBB形式、Qt定義色(<code>Qt::red</code>等)で指定する。<br>
透明度(AA、アルファチャンネル)を省略する時、初期値は255となる。<br>
<code>ShowAlphaChannel</code>オプションを指定しない場合、AAに初期値を指定しても戻り値は固定でFF(255)となる。<br>
<syntaxhighlight lang="c++">
QColor color = QColorDialog::getColor("#800a64c8", this, tr("色選択"), QColorDialog::ShowAlphaChannel);
if(color.isValid())
{
    // color.name();  → "#0a64c8" (#RRGGBB)
    // color.name(QColor::HexArgb);  → "#800a64c8" (#AARRGGBB)
    // int r, g, b, a;
    // color.getRgb(&r, &g, &b, &a);  → r=10, g=100, b=200, a=128
}
</syntaxhighlight>
<br>
<center>
QColorDialogのオプション(enum QColorDialog::ColorDialogOption)<br>
{| class="wikitable" style="background-color:#fefefe;"
|-
! style="background-color:#00ffff;" | オプション名
! style="background-color:#00ffff;" | 値
! style="background-color:#00ffff;" | 説明
|-
| ShowAlphaChannel || 0x00000001 || アルファチャンネル(透明度)を表示する。
|-
| NoButtons || 0x00000002 || OKとキャンセルのボタンを表示しない。<br>(ライブダイアログで役立つ)
|-
| DontUseNativeDialog || 0x00000004 || OS標準ではなくQt標準の色選択を使用する。<br>(指定しない場合、有効)。
|}
</center>
<br>
<code>getColor</code>メソッドの引数を全て省略する時、標準のダイアログが表示される。<br>
この時、標準ダイアログのタイトルは"Select Color"、色は白(#ffffff)、アルファチャンネルの項目は無い。<br>
<syntaxhighlight lang="c++">
QColor color = QColorDialog::getColor();
</syntaxhighlight>
<br><br>
== フォント選択ダイアログ(QFontDialog) ==
フォント選択ダイアログは、フォントを選択できるダイアログである。<br>
<code>QFontDialog</code>クラスの<code>getFont</code>メソッドは、Qt標準のフォント選択ダイアログを表示する。<br>
[書式1] getFont(結果, 初期フォント, 親ウインドウのポインタ, ダイアログのタイトル, オプション)
[書式2] getFont(結果, 親ウインドウのポインタ)
<br>
以下の例では、初期フォントを18pxのCourier、等幅フォントとしている。<br>
<code>getFont</code>メソッドの戻り値は、選択したフォント情報のクラスである。(キャンセルした場合、第1引数はfalseとなる)<br>
[Esc]キーを押下する場合は、キャンセルしたものと見なされる。<br>
<syntaxhighlight lang="c++">
bool ok;
QFont font = QFontDialog::getFont(&ok, QFont("Courier", 18), this, tr("フォント選択"), QFontDialog::MonospacedFonts);
if(ok)
{
    // font.family();  → "Courier"
    // font.pointSize();  → 18
    // font.italic();  → false (true:Font styleがItalic)
    // font.bold();  → false (true:Font styleがBold)
    // font.weight();  → 50 (bold()=trueの時は75)
    // font.strikeOut();  → false (true:EffectsのstrikeOutオン)
    // font.underline();  → false (true:Effectsのunderlineオン)
}
</syntaxhighlight>
<br>
<center>
QFontDialogクラスのオプション(enum QFontDialog::FontDialogOption)<br>
{| class="wikitable" style="background-color:#fefefe;"
|-
! style="background-color:#00ffff;" | オプション名
! style="background-color:#00ffff;" | 値
! style="background-color:#00ffff;" | 説明
|-
| NoButtons || 0x00000001 || [OK]ボタンと[キャンセル]ボタンを表示しない。<br>(ライブダイアログで役立つ)<br><u>ただし、ダイアログ右上の[閉じる]ボタンが使用できなくなる。</u>
|-
| DontUseNativeDialog || 0x00000002 || OS標準ではなくQt標準のフォント選択を使用する。<br>指定しない場合、Qt標準のフォント選択を使用する。
|-
| ScalableFonts || 0x00000004 || スケーラブルフォントを表示する。<br>スケーラブルフォントとは、拡大縮小しても精度の変わらないフォントである。
|-
| NonScalableFonts || 0x00000008 || スケーラブルフォント以外を表示する。
|-
| MonospacedFonts || 0x00000010 || 等幅フォントを表示する。
|-
| ProportionalFonts || 0x00000020 || 可変幅フォントを表示する。
|}
</center>
<br>
第1引数は必須であり、他の引数を全て省略する時、標準のフォント選択ダイアログが表示される。<br>
この時、ダイアログのタイトルは"Select Font"、使用可能なフォントをアルファベット順に並べて、その先頭が選択された状態となる。<br>
<syntaxhighlight lang="c++">
bool ok;
QFont font = QFontDialog::getFont(&ok);
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>

案内メニュー