【问题标题】:QtRuby on OSX restore minimized window on timerOSX上的QtRuby在计时器上恢复最小化窗口
【发布时间】:2012-12-23 01:08:12
【问题描述】:

我正在使用 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()

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

有谁知道如何在 OSX 上使用 QTRuby 甚至 QT 和 C++ 弹出一个最小化窗口?

TIA 卢克

【问题讨论】:

    标签: macos qt user-interface qtruby


    【解决方案1】:

    我使用 Qt 的线程而不是 ruby​​ 线程,现在一切都很好。也许与全局解释器锁有关。

    我换了

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多