*

QtでRaspberryPi/GUI開発(2):ためしに時計を作ってみた(其の弐)

公開日: : C++, C言語, Qt, 開発

どもです。
前回のエントリーでは、ラジオボタンのグループ化と、選択されたボタンの特定方法まで記載しました。
今回のエントリーでは、その続き(?)でグループ化されたボタンに対するイベントハンドラについて書きます。

1.イベントハンドラの定義
Qtでイベントハンドラを宣言する場合、通常のC++に+αの記述が必要になります。
それは、「slots:」の記載です。
ヘッダーファイルでイベントハンドラを宣言する際には、アクセス指定子に「slots:」が追記された範囲に記述する必要があります。
たとえば、下記のようになります。

「slots:」が付与されていないとイベントハンドラとして認識されず、イベントに紐付けることができません。

2.connectしよう
Qtでイベントハンドラを設定するためには、connectメソッドを使用します。
詳細については、connectのヘルプを参照してください。
また、イベントハンドラの設定については、QMainWindowクラスを継承したクラスで実施するのが一般的のようです。

GUIオブジェクトのイベントに対するイベントハンドラは、下記のコードで設定可能です。

connect()関数の第1、および第2引数ではイベントを発生させるGUIオブジェクト、および紐付けたいイベント(シグナル)を指定します。
第3、および第4引数では、イベントを受け取るオブジェクト、およびイベントハンドラ(スロット)を指定しています。
その際には、SIGNAL()、SLOT()マクロを使用しましょう。

なお、QtDesignerでもイベントハンドラ(シグナル/スロット)を設定可能なのですが、こちらでは独自のイベントハンドラ(上述のコードでのonDateDisplayConfigGroupClicked(int)、あるいはonTimeDisplayConfigGroupClicked(int))は指定できないようです。
アクセス指定子を「public:」に設定しても、結果は変わりませんでした。

3.イベントハンドラを実装しよう
はい。実装して下さい。
今回作成した「時計」では、下記のように実装しています。

onDateDisplayConfigGroupClicked(int)、およびonTimeDisplayConfigGroupClicked(int)の引数をコメントアウトしていますが、これは使用していない変数に対する警告を非表示にするためです。
それ以外に、特に深い理由・目的はありません。
あしからず。

上記の実装により、ラジオボタンが押される度にイベントハンドハンドラ(onDateDisplayConfigGroupClicked(int)、およびonTimeDisplayConfigGroupClicked(int))が呼び出され、選択されたボタンに対応して日時の表示が更新されます。
コードおよびプロジェクト全体を、GitHubで公開しています。
是非一度、実行してみてください。

4.なぜかなぜか続きます
残念ながら、今回のエントリーでも書きたいことが書き切れませんでした。
なので、まだ続きます。
あと1回くらいで完了にしたいです。

ではっ!

関連記事

RasPi_Qt

QtでRaspberryPi/GUI開発(6):pigpioを使用したチャタリング対策

どもです。 前回のエントリーで、pigpioを使用したボタンを使用したLEDの点灯/消灯について書

記事を読む

eclipse_4.3_kepler

eclipse/CDTにおけるgdbでのデバッグ中に発生するpythonのエラー

どもです。 今回のエントリーは、Eclipse上でのデバッグの際に「pythonのエンコードエラー

記事を読む

no image

C言語でEV3開発(8)-opOUTPUT_POWERコマンド

どもです。 今回のエントリーでは、EV3でモーターを動かします。 なお、今回のエントリーでも

記事を読む

google_test_top

C言語でEV3開発(5)

どもです。 今回のエントリーは、前回のエントリーでちくっと触れた、「単体テスト」について、です。

記事を読む

no image

C言語でEV3開発(4)

どもです。 今回のエントリーは、前回のエントリー内容/EclipseでEV3の実行ファイルをビルド

記事を読む

toppers

C言語でEV3開発(23)-モーターの性能確認

どもです。 今回は、EV3に付属しているモーター(Lモーター/Mモーター)の性能について調べてみた

記事を読む

google_test

C言語でEV3開発(6)

どもです。 今回のエントリーは、前回のエントリーの続き、google testでの単体テスト環境に

記事を読む

MindStormControl_SprachScreen

EV3開発サポートツール(1)-C#のユーザーコントロール開発

どもです。 突然ですが、今回はC#に関するエントリになります。 具体的には、C#/WPFで、独自

記事を読む

no image

C言語でEV3開発(15)-TOPPERS/HRP2 EV3 で PID制御

どもです。 今回のエントリーは、コレまでのエントリーから内容を変えて、モーターの動作の制御をします

記事を読む

toppers

C言語でEV3開発(19)-コマンド通信処理でEchoBackしてみた

どもです。 前回は、Bluetoothの接続状態の変化に伴う、状態遷移について書きました。 今回

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

RasPi_Qt
QtでRaspberryPi/GUI開発(6):pigpioを使用したチャタリング対策

どもです。 前回のエントリーで、pigpioを使用したボタンを使用し

RasPi_Qt
QtでRaspberryPi/GUI開発(5):pigpioを使ってみた

どもです。 RaspberryPiを購入して、LEDも手に入れたので

RasPi_Qt
QtでRaspberryPi/GUI開発(4):イベントハンドラの設定

どもです。 前回のエントリーで、「タッチスクリーンを買った」と書きま

raspberry-pi
RaspberryPi3対応のタッチスクリーンを買いました

どもです。 ついに、念願のRaspberryPi3対応のタッチスクリ

no image
QtでRaspberryPi/GUI開発(3):ためしに時計を作ってみた(其の参)-StyleSheetの適用

どもです。 前回のエントリーでは、グループ化されたボタンに対するイベ

→もっと見る

PAGE TOP ↑