OSX上的QtRuby恢复了计时器上的最小化窗口

时间:2013-01-09 02:47:26

标签: macos qt user-interface qtruby

我正在OSX上使用QtRuby编写时间记录应用程序。重要的是它会定期提醒用户(我的团队)记录他们的时间,最好是到达前台(如果需要,最小化)。这非常像mac,所以我会接受一个弹跳的任务托盘图标。我无法上班。

无论如何,我已经尝试了以下

self.show()
self.showNormal()
self.raise()
self.activateWindow()
self.maximize()
self.setWindowState(Qt::WindowActive)
self.setWindowState(Qt::WindowMaximized)

# Must execute this with GUI thread
msgbox = Qt::MessageBox.new()
msgbox.setText('LOG YOUR TIME!')
msgbox.exec()

一旦最小化或在后台,所有这些命令似乎都会被忽略。在尝试弹出消息框时,我解决了“无法为不同线程中的父级创建子级”。发出信号时出错,但在用户激活窗口之前似乎没有处理事件。

有没有人知道如何使用QTRuby或甚至QT& amp; OSX上的C ++?

TIA 路加

1 个答案:

答案 0 :(得分:3)

我使用Qt的线程而不是红宝石线程,现在一切都很可爱。也许与全球翻译锁有关。

我替换了

Thread.new { loop { every_minute_do_on_diff_thread; sleep 60 } }
connect(self, SIGNAL('every_minute_do_signal()'), self, SLOT('every_minute_do()'))

def every_minute_do_on_diff_thread
  emit(every_minute_do_signal())
end

timer = Qt::Timer.new(self);
connect(timer, SIGNAL('timeout()'), self, SLOT('every_minute_do()'))
timer.start(60000)