为什么没有Ruby Qt时钟更新?

时间:2012-10-26 18:56:17

标签: ruby qt

我正在尝试在Ruby Qt gem install qtbindings中编写自定义时钟小部件。时钟应该每秒更新当前时间。它没有,代码似乎很完美,为什么这不起作用?

require "Qt4"

class ClockLabel < Qt::Label
    attr_accessor :timer
    def initialize(date_format = '%Y-%d-%mT%H:%M:%S')
        super()
        @date_format = date_format
        self.set_text(Time.now.strftime date_format)
    end

    def paint_event(event)
        super(event)
        painter = Qt::Painter.new(self)
        painter.draw_text(event.rect.x, event.rect.y, Time.now.strftime(@date_format))
    end

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

if __FILE__ == $PROGRAM_NAME
    app = Qt::Application.new([])
    clock = ClockLabel.new()
    clock.start
    clock.show
    app.exec()
end

1 个答案:

答案 0 :(得分:0)

如果我用

替换connect来电,它会有效
  @timer.connect(SIGNAL :timeout) {
    set_text(Time.now.strftime @date_format)
    update
  }

paint_event永远不会被调用,可以省略。这给出了小部件没有改变的提示,因此我们在定时器触发时更改它。