Hatena::ブログ(Diary)

はけの徒然日記 このページをアンテナに追加 RSSフィード

2005 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 08 | 09 | 10 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 |
2011 | 01 | 02 | 03 | 04 | 11 | 12 |
2012 | 02 | 03 | 05 |
2014 | 02 | 03 | 04 | 05 | 12 |
2015 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 04 | 05 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 |

2005-11-15(Tue)

時刻表示とタイマー

Ruby/Qte勉強 その37

f:id:hake:20051115203044j:image

画面に現在時刻を表示、スタートボタンで開始、ストップボタンで停止します。

時計の表示はQLCDNumberのオブジェクトを8桁で使用しています。QTimerのオブジェクト@timerを作成しスタートボタンが押されると1秒毎にシグナルtimeoutが発生、これを受けてメソッドdiaplayが実行されます。ちなみに@timer.startの第2引数をtrueにすると1回のみのシグナル発生になります。

メソッドdisplayでは、Qtimeのオブジェクトにより現在時刻を取得、これを変換して時刻表示させています。


あー、こんな便利なクラスにもっと早く気付いてたらSHOUTcastPlayerのスリープ機能もあんなに苦労しなくて済んだのに……orz

#!/usr/bin/env ruby

require "qte"
require "qpe"
include Qte
include Qpe

class SampleWindow < QMainWindow
   def initialize()
      super()
      setCaption(tr("サンプル"))

      @v = QVBoxLayout.new(self, 20)

      @lcd = QLCDNumber.new(8, self)
      @lcd.setSegmentStyle( QLCDNumber::Flat )
      @h = QHBox.new(self)
         @pbstart = QPushButton.new(tr("スタート"), @h)
         connect(@pbstart, QSIGNAL("clicked()"), self, 'start')
         @pbstop = QPushButton.new(tr("ストップ"), @h)
         connect(@pbstop, QSIGNAL("clicked()"), self, 'stop')

      # 画面レイアウト
      @v.addWidget(@lcd, 1)          # LCDを大きく表示
      @v.addWidget(@h)

      @timer = QTimer.new(self)
      # 設定した時間が経過したらシグナル発生
      connect(@timer, QSIGNAL("timeout()"), self, 'display')

      @now = QTime.new(0, 0)
      display
   end

   # 現在時刻表示
   def display
      @now.start                   # 現在時刻取得
      @nowstr = @now.toString      # QStringに変換
      @lcd.display(@nowstr)        # 表示
   end

   # スタート
   def start
      @timer.start(1000, false)  # 1sec毎にシグナル発生
   end

   # タイマストップ
   def stop
      @timer.stop
   end
end

$defaultCodec = QTextCodec.codecForName("utf8")
app = QPEApplication.new([$0]+ARGV)
app.setDefaultCodec($defaultCodec)
QApplication.setFont(QFont.new("lcfont", 18))
app.showMainWidget(SampleWindow.new)
app.exec

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/hake/20051115/p2