gpt4 book ai didi

macos - OSX 上的 QtRuby 在计时器上恢复最小化窗口

转载 作者:行者123 更新时间:2023-12-03 04:21:16 25 4
gpt4 key购买 nike

我正在 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卢克

最佳答案

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

关于macos - OSX 上的 QtRuby 在计时器上恢复最小化窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14227546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com