class AnalogClock

an analog clock widget using an internal Qt::Timer

Public Class Methods

new(parent = nil) click to toggle source
Calls superclass method
# File examples/widgets/analogclock/analogclock.rb, line 33
def initialize(parent = nil)
    super(parent)

    @timer = Qt::Timer.new(self)
    connect(@timer, SIGNAL('timeout()'), self, SLOT('update()'))
    @timer.start(1000)

    setWindowTitle(tr("Analog Clock"))
    resize(200, 200)
end

Public Instance Methods

paintEvent(e) click to toggle source
# File examples/widgets/analogclock/analogclock.rb, line 44
def paintEvent(e)
    hourHand = Qt::Polygon.new( [   Qt::Point.new(7, 8),
                                    Qt::Point.new(-7, 8),
                                    Qt::Point.new(0, -40) ] )
    minuteHand = Qt::Polygon.new(   [   Qt::Point.new(7, 8),
                                        Qt::Point.new(-7, 8),
                                        Qt::Point.new(0, -70) ] )
    hourColor = Qt::Color.new(127, 0, 127)
    minuteColor = Qt::Color.new(0, 127, 127, 191)

    side = width() < height() ? width() : height()
    time = Qt::Time.currentTime

    painter = Qt::Painter.new(self)
    painter.renderHint = Qt::Painter::Antialiasing
    painter.translate(width() / 2, height() / 2)
    painter.scale(side / 200.0, side / 200.0)

    painter.pen = Qt::NoPen
    painter.brush = Qt::Brush.new(hourColor)

    painter.save
    painter.rotate(30.0 * ((time.hour + time.minute / 60.0)))
    painter.drawConvexPolygon(hourHand)
    painter.restore

    painter.pen = hourColor
    (0...12).each do |i|
        painter.drawLine(88, 0, 96, 0)
        painter.rotate(30.0)
    end

    painter.pen = Qt::NoPen
    painter.brush = Qt::Brush.new(minuteColor)

    painter.save
    painter.rotate(6.0 * (time.minute + time.second / 60.0))
    painter.drawConvexPolygon(minuteHand)
    painter.restore

    painter.pen = minuteColor
    (0...60).each do |j|
        if (j % 5) != 0
            painter.drawLine(92, 0, 96, 0)
        end
        painter.rotate(6.0)
    end

            painter.end
end