*

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回くらいで完了にしたいです。

ではっ!

関連記事

raspberry-pi

libpigpioでのRaspberryPi3とArduinoのSPI通信

どもです。 今回は、libpigpioを使用してRaspberryPi3とArduinoでSPI通

記事を読む

no image

C言語でEV3開発(11)-opOUTPUT_STEP_POWERコマンド

どもです。 今回のエントリーでは、再びモーターを動かすためのコマンドについて書きます。 コマンド

記事を読む

eclipse_cdt_top_100

C言語でEV3開発(3)

どもです。 今回のエントリーの内容は、前回まででセットアップした環境で、実際にEV3上で動く実行フ

記事を読む

raspberry-pi

RaspberryPiで物体検出(2)-白線検出への挑戦(2):輪郭検出による白線検出(実機編)

どもです。 今回は、前回に引き続きOpenCvを用いて道路の白線検出について、です。 1.今

記事を読む

eclipse_oxygen

Eclipse/CrossCompile環境でプロジェクトをクリーンできない

どもです。 今回は、Eclipseでクロスコンパイル環境を作成した場合、を実行すると「指定されたフ

記事を読む

GitHub

C/C++のスタブを自動生成するツールを公開しました

どもです。 突然ですが、C/C++の単体テストで使用する「スタブ」を自動で生成するツールを公開

記事を読む

no image

C言語でEV3開発(21)-モーター出力の制御

どもです。 前回は、超音波センサから前方障害物との距離を取得し、それを元に安全状態を判断する、とい

記事を読む

no image

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

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

記事を読む

python

VisualStudioCommunityでのPython開発環境構築

どもです。 最近、VisualStudioでのPython開発を始めました。 その際の環境構築に

記事を読む

raspberry-pi

RaspberryPi起動時にpigpiodがスタートしないようにする

どもです。 これまでpigpioを使用してRaspberryPiからLEDをチカらせる方法など、い

記事を読む

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
Rasbianの新しいバージョンが出たので、クロス環境を更新してみた。(その後)

どもです。 前回、Linux/RaspberryPiでのQt(Q

RasPi_Qt
Rasbianの新しいバージョンが出たので、クロス環境を更新してみた。

どもです。 RaspberryPiのOS:Raspbianの新し

no image
RaspberryPiのOS:RaspbianをNOOBSでセットアップしてみた

どもです。 今回の内容は、「今更!?」ですがNOOBSでRasp

GitHub
C/C++のスタブを自動生成するツールを公開しました

どもです。 突然ですが、C/C++の単体テストで使用する「スタブ

Arduino_Logo
フォトレジスタを使ってみた-Arduinoで光検出

どもです。 今回は、タイトル通り「フォトレジスタの使い方」です。

→もっと見る

PAGE TOP ↑