Qt(キュート)プログラム実行まで[サンプル(前編)]

サンプル画面の作成

サンプル画面について

ボックス・フォーム・グリッド・スタックなど、いろいろなレイアウトを使ったサンプルです。
ラベル・プッシュボタン・テキストボックスなど、よく使うウィジェットが入っています。
また、ファイル選択・色選択・メッセージボックスなどのダイアログもあります。

「サンプル(前編)」で、画面上側のメニュー/ツールバーと下側のステータスバーを作成します。
「サンプル(中編)」で、クライアント領域のほとんどを作ります。
「サンプル(後編)」で、画面右下のスタックレイアウトの内容を作ります。

このサンプルを実行するには下記のインクルードが必要です。詳しくは「ソースの確認」参照。

#include <QtWidgets>

関数の宣言 (mainwindow.h)

サンプル画面は3つに分けて作成します。
・上側のメニューバーとツールバー
・下側のステータスバー
・中央のクライアント領域

初期設定と各部分の作成 (mainwindow.cpp)

最初にウインドウのタイトルやアイコンなどを設定します。それから3つの部分を作成します。
※スプリッターは、つかむところに色を付けて目立つようにしています。

メニューとツールバー

メニューの構成

メインメニュー(ファイル/ダイアログ/参考)と、サブメニュー(メッセージ)を作ります。
4項目(情報表示/ウインドウを閉じる/色選択/フォント選択)をツールバーに表示します。

メニューとツールバーの追加 (mainwindow.cpp)

この関数内でメニューとツールバーを追加します。

1.[ファイル] メニュー追加

アクションを2つ作ってメニューに追加します。
ファイル (fileMenu) 項目アクション イベント関数アイコン、キー、チップ文字列
情報表示infoActwindowInfo() アイコンあり、Ctrl+1キー、ウインドウ情報の表示
ウインドウを閉じるexitAct アイコンあり、Ctrl+9キー、アプリケーションの終了

スロットに close() を指定すれば、終了処理を行う関数を記述する必要がありません。
「ウインドウを閉じる」が選択された時、自動的にウインドウを閉じて終了します。

2.[メッセージ] サブメニュー作成

アクションを2つ作ってサブメニューに追加します。
メッセージ (msgMenu) 項目アクションイベント関数
警告メッセージmsgWarnActdialogMsgWarn()
確認メッセージmsgYesNoActdialogMsgYesNo()

メインメニューはメニューバーに追加するだけですが、サブメニューの場合は newで作成します。

3.[ダイアログ] メニュー追加

アクションを5つ作り、上で作ったサブメニューと一緒にメニューに追加します。
ダイアログ (dialogMenu) 項目アクションイベント関数
ファイルを開くopenActdialogFileOpen()
名前を付けて保存saveActdialogFileSave()
フォルダ選択pathActdialogDirPath()
色選択colorActdialogColor()
フォント選択fontActdialogFont()
メッセージmsgMenu


4.[参考] メニュー追加

アクションを2つ作ってメニューに追加します。
参考 (refMenu) 項目アクションイベント関数
標準Pixmap一覧pixmapActdisplayStandardPixmap()
標準カーソルcursorActcheckStandardCursor()


5.ツールバーにメニュー項目を追加

2つのツールバーを作ってメニュー項目のアクションを追加します。
アクションにアイコンがなければツールバーには文字が表示されます。

ショートカットキーについて

ショートカットキーの指定 (未確認)

ショートカットキーは、setShortcutで指定できます。

menuAct1->setShortcut(tr("Ctrl+1"));

テキスト内の"&"の直後の文字は ショートカットキー(Alt+文字)になります。

QMenu *fileMenu = menuBar()->addMenu(tr("&File"));
QAction *exitAct = new QAction(tr("E&xit"), this);

日本語の場合は(&英字)にします。

QAction *exitAct = new QAction(tr("閉じる(&x)"), this);

行編集の場合は相棒のラベルに設定します。

QLineEdit *edit = new QLineEdit;
QLabel *label = new QLabel("&Tel:");
label->setBuddy(edit);

※&を表示する場合は&&と2つ並べます。
※1つのテキストに複数の&を指定しても、その中の1つしか割り当てられません。
※同じキーを複数のテキストで指定すると、該当する処理を順番に行います。
 ただし、キーを1回押すごとに1つの処理しか行いません。。

メニューのイベント処理

イベント関数

Noメニュー項目イベント関数内容
情報表示windowInfo() ウインドウのXY座標・横×縦・状態
ファイルを開くdialogFileOpen() [ファイルを開く] ダイアログ
名前を付けて保存dialogFileSave() [名前を付けて保存] ダイアログ
フォルダ選択dialogDirPath() [フォルダ選択] ダイアログ
色選択dialogColor() [色選択] ダイアログ
フォント選択dialogFont() [フォント選択] ダイアログ
警告メッセージdialogMsgWarn() メッセージボックス(警告)
確認メッセージdialogMsgYesNo() メッセージボックス(確認)
標準Pixmap一覧displayStandardPixmap() Qt標準Pixmapサンプル
10標準カーソルcheckStandardCursor() Qt標準カーソルサンプル
11closeDialog() ダイアログ終了処理

イベント関数の宣言 (mainwindow.h)

イベント関数 (mainwindow.cpp)

1.情報表示

ウインドウの左上座標・サイズ・状態をメッセージボックスに表示します。



2.ファイルを開く

[ファイルを開く] ダイアログを表示して選択されたファイル名をデバッグ出力します。



3.名前を付けて保存

[名前を付けて保存] ダイアログを表示して入力されたファイル名をデバッグ出力します。

※このデバッグ出力ではファイル名の日本語の部分が文字化けします。


4.フォルダ選択

[フォルダ選択] ダイアログを表示して選択されたフォルダ名をデバッグ出力します。



5.色選択

[色選択] ダイアログを表示して選択された色の名前(#RRGGBB)をデバッグ出力します。



6.フォント選択

[フォント選択] ダイアログを表示して選択されたフォントの情報をデバッグ出力します。



7.警告メッセージ

警告アイコンのメッセージボックスを表示します。



8.確認メッセージ

質問アイコンのメッセージボックスを表示し、 結果を情報アイコンのメッセージボックスで表示します。



9.標準Pixmap一覧

Qtで定義されている0~95の標準Pixmapを一覧表示します。



10.標準カーソル

Qtで定義されている0~21の標準カーソルをテストします。
マウスカーソルを白枠の中に入れると番号のカーソルに変わります。

※19~21はドラッグ&ドロップ用なので、その他カーソル(cursor_xpm)にしています。


11.ダイアログを閉じる

実行中のダイアログ(QDialog)を閉じて、戻り値=0でexecを終了します。



ステータスバー

ステータスバーについて

ステータスバーはすでに存在するので、文字を表示すると自動的に現れます。
ここでは右端にラベルを3つ作り、テキストと現在時刻と画像を表示します。

タイマー関連の宣言 (mainwindow.h)

タイマーのイベント関数とID、それから現在時刻を表示するラベルを宣言します。

ステータスバーの表示 (mainwindow.cpp)

画像は標準pixmapを使用します。タイマーは1秒間隔です。

タイマーのイベント処理 (mainwindow.cpp)

現在日時を取得して hh:mm に整形し、ラベルの内容と違っていたらセットします。

2016年12月