Class: WigglyWidget

Inherits:
Qt::Widget show all
Defined in:
ext/ruby/qtruby/examples/widgets/wiggly/wigglywidget.rb

Overview

** ** Copyright © 2005-2005 Trolltech AS. All rights reserved. ** ** This file is part of the example classes of the Qt Toolkit. ** ** This file may be used under the terms of the GNU General Public ** License version 2.0 as published by the Free Software Foundation ** and appearing in the file LICENSE.GPL included in the packaging of ** self file. Please review the following information to ensure GNU ** General Public Licensing requirements will be met: ** www.trolltech.com/products/qt/opensource.html ** ** If you are unsure which license is appropriate for your use, please ** review the following information: ** www.trolltech.com/products/qt/licensing.html or contact the ** sales department at [email protected]. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. **

** Translated to QtRuby by Richard Dale

Instance Method Summary collapse

Methods inherited from Qt::Widget

#raise

Methods inherited from Qt::Base

#%, #&, #*, #**, #+, #-, #-@, #/, #<, #<<, #<=, #==, #>, #>=, #>>, #QCOMPARE, #QEXPECT_FAIL, #QFAIL, #QSKIP, #QTEST, #QVERIFY, #QVERIFY2, #QWARN, #^, ancestors, #is_a?, #methods, private_slots, #protected_methods, #public_methods, q_classinfo, q_signal, q_slot, signals, #singleton_methods, slots, #|, #~

Constructor Details

#initialize(parent = nil) ⇒ WigglyWidget

Returns a new instance of WigglyWidget.



30
31
32
33
34
35
36
37
38
39
40
41
# File 'ext/ruby/qtruby/examples/widgets/wiggly/wigglywidget.rb', line 30

def initialize(parent = nil)
    super(parent)
    setBackgroundRole(Qt::Palette::Midlight)

    newFont = font()
    newFont.pointSize += 20
    setFont(newFont)

    @step = 0
    @timer = Qt::BasicTimer.new
    @timer.start(60, self)
end

Instance Method Details

#paintEvent(event) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'ext/ruby/qtruby/examples/widgets/wiggly/wigglywidget.rb', line 47

def paintEvent(event)
    sineTable = [   0, 38, 71, 92, 100, 92, 71, 38,
                    0, -38, -71, -92, -100, -92, -71, -38 ]

    metrics = Qt::FontMetrics.new(font())
    x = (width() - metrics.width(@text)) / 2
    y = (height() + metrics.ascent() - metrics.descent()) / 2
    color = Qt::Color.new

    painter = Qt::Painter.new(self)
    (0...@text.size).each do |i|
        index = (@step + i) % 16
        color.setHsv((15 - index) * 16, 255, 191)
        painter.pen = color
        painter.drawText(x, y - ((sineTable[index] * metrics.height()) / 400),
                        @text[i, 1])
        x += metrics.width(@text[i, 1])
    end
    painter.end
end

#setText(newText) ⇒ Object



43
44
45
# File 'ext/ruby/qtruby/examples/widgets/wiggly/wigglywidget.rb', line 43

def setText(newText)
    @text = newText
end

#timerEvent(event) ⇒ Object



68
69
70
71
72
73
74
75
# File 'ext/ruby/qtruby/examples/widgets/wiggly/wigglywidget.rb', line 68

def timerEvent(event)
    if event.timerId == @timer.timerId
        @step += 1
        update()
    else
        super(event)
    end
end