Class: CircleWidget

Inherits:
Qt::Widget show all
Defined in:
ext/ruby/qtruby/examples/painting/concentriccircles/circlewidget.rb

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) ⇒ CircleWidget

Returns a new instance of CircleWidget.



31
32
33
34
35
36
37
38
39
# File 'ext/ruby/qtruby/examples/painting/concentriccircles/circlewidget.rb', line 31

def initialize(parent = nil)
    super(parent)
    @floatBased = false
    @antialiased = false
    @frameNo = 0

    setBackgroundRole(Qt::Palette::Base)
    setSizePolicy(Qt::SizePolicy::Expanding, Qt::SizePolicy::Expanding)
end

Instance Method Details

#antialiased=(antialiased) ⇒ Object



46
47
48
49
# File 'ext/ruby/qtruby/examples/painting/concentriccircles/circlewidget.rb', line 46

def antialiased=(antialiased)
    @antialiased = antialiased
    update()
end

#floatBased=(floatBased) ⇒ Object



41
42
43
44
# File 'ext/ruby/qtruby/examples/painting/concentriccircles/circlewidget.rb', line 41

def floatBased=(floatBased)
    @floatBased = floatBased
    update()
end

#minimumSizeHintObject



51
52
53
# File 'ext/ruby/qtruby/examples/painting/concentriccircles/circlewidget.rb', line 51

def minimumSizeHint()
    return Qt::Size.new(50, 50)
end

#nextAnimationFrameObject



59
60
61
62
# File 'ext/ruby/qtruby/examples/painting/concentriccircles/circlewidget.rb', line 59

def nextAnimationFrame()
    @frameNo += 1
    update()
end

#paintEvent(event) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'ext/ruby/qtruby/examples/painting/concentriccircles/circlewidget.rb', line 64

def paintEvent(event)
    painter = Qt::Painter.new(self)
    painter.setRenderHint(Qt::Painter::Antialiasing, @antialiased)
    painter.translate(width() / 2, height() / 2)

	diameter = 0
	while diameter < 256
        delta = ((@frameNo % 128) - diameter / 2).abs
        alpha = 255 - (delta * delta) / 4 - diameter
        if alpha > 0
            painter.pen = Qt::Pen.new(Qt::Brush.new(Qt::Color.new(0, diameter / 2, 127, alpha)), 3)

            if @floatBased
                painter.drawEllipse(Qt::RectF.new(-diameter / 2.0, -diameter / 2.0,
                                           diameter, diameter))
            else
                painter.drawEllipse(Qt::Rect.new(-diameter / 2, -diameter / 2,
                                          diameter, diameter))
            end
        end
		diameter += 9
    end
	painter.end
end

#sizeHintObject



55
56
57
# File 'ext/ruby/qtruby/examples/painting/concentriccircles/circlewidget.rb', line 55

def sizeHint()
    return Qt::Size.new(180, 180)
end