*

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

ではっ!

関連記事

toppers

C言語でEV3開発(26)-EV3で機械学習(1)-QLearningをC#に委譲してみた

どもです。 前回の投稿では、Q-LearningをEV3本体に実装してみたら、メモリが足りなくて動

記事を読む

eclipse_oxygen

苦肉の策でLinux/EclipseでRaspberryPiのクロス環境を構築してみた

どもです。 前回のエントリでは、仮想環境(VirtaulBox)を用いたRaspberryPi3の

記事を読む

Splash

EV3開発サポートツール(3)-Ev3Controller

どもです。 今回は、以前ちらりと紹介した、Ev3のモーターの出力を調整するアプリケーションについて

記事を読む

RasPi_Qt

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

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

記事を読む

no image

C言語でEV3開発(9)-opOUTPUT_SPEEDコマンド

どもです。 今回のエントリーでは、前回に引き続きEV3のモーターを動かしていきます。 ただし、単

記事を読む

RasPi_Qt

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

どもです。 RaspberryPiを購入して、LEDも手に入れたのでコレをチカらせてみようと思いま

記事を読む

no image

C言語でEV3開発(14)-opOUTPUT_TIME_SPEEDコマンド

どもです。 今回のエントリーは、モーターを動かすコマンドである「opOUTPUT_TIME_SPE

記事を読む

eclipse_oxygen

Linux/EclipseでRaspberryPiのクロス環境を構築してみた…がっ!

どもです。 前回のエントリでは、WindowsにRaspberryPi3のクロスコンパイル環境の構

記事を読む

no image

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

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

記事を読む

no image

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

どもです。 前回のエントリーでは、グループ化されたボタンに対するイベントハンドラについて書きました

記事を読む

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="">

raspberry-pi
QtでRaspberryPi/GUI開発(7):pigpioを使用したチャタリング対策の問題

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

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対応のタッチスクリ

→もっと見る

PAGE TOP ↑