*

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

ではっ!

関連記事

no image

C言語でEV3開発(10)-opOUTPUT_CLEAR_COUNTコマンド

どもです。 前回のエントリーのラストで、「モーターを動かすコマンド」と書きましたが、今回紹介するコ

記事を読む

toppers

C言語でEV3開発(18)-モードの遷移の設計-コマンド通信処理の準備

 どもです。  今回は、前回紹介したEv3とBluetoothで通信する機能を

記事を読む

RasPi_Qt

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

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

記事を読む

raspberry-pi

RaspberryPi3を購入しました

どもです。 突然ですが、「Raspberry Pi3 model B」を購入しました。 今回のエ

記事を読む

raspberry-pi

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

どもです。 また更新の間隔が空いてしまいました。 久しぶりの更新です。 前回のエントリーで

記事を読む

python

Ev3開発サポートツール(4)-Pythonによるグラフ表示

どもです。 前回のエントリーで、VisualStudioCommunityでのPythonの開発環

記事を読む

no image

C言語でEV3開発(4)

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

記事を読む

toppers

C言語でEV3開発(20)-超音波センサと安全状態

どもです。 前回は、BluetoothでPCとEv3を接続してコマンドの送受信について書きました。

記事を読む

no image

C言語でEV3開発(7)

どもです。 今回のエントリーでは、いよいよEV3を動かしていきます。 新しい環境に対して、最もよ

記事を読む

RasPi_Qt

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

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

記事を読む

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

Arduino_Logo
Arduino nano(中華版)をセットアップしてみた

どもです。 突然ですが、「Arduino nano」互換(なのか?)

raspberry-pi
libpigpioでのRaspberryPi3とArduinoのSPI通信

どもです。 今回は、libpigpioを使用してRaspberryP

RasPi_Qt
QtでRaspberryPi/GUI開発(10)-SPI通信をしてみた(その3)

どもです。 えー。 「Qtで…」とか書いておきながら、今回もやっぱ

RasPi_Qt
QtでRaspberryPi/GUI開発(10)-SPI通信をしてみた(その2)

どもです。 えー。 「Qtで…」とか書いておきながら、今回もやっぱ

raspberry-pi
QtでRaspberryPi/GUI開発(9)-SPI通信をしてみた

どもです。 えー。 「Qtで…」とか書いておきながら、今回はQtは

→もっと見る

PAGE TOP ↑