首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QtRuby on OSX restore最小化窗口on timer

QtRuby on OSX restore最小化窗口on timer
EN

Stack Overflow用户
提问于 2013-01-09 10:47:26
回答 1查看 172关注 0票数 3

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

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

代码语言:javascript
复制
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 & C++弹出最小化的窗口?

蒂娅·卢克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-09 11:39:11

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

我换掉了

代码语言:javascript
复制
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

使用

代码语言:javascript
复制
timer = Qt::Timer.new(self);
connect(timer, SIGNAL('timeout()'), self, SLOT('every_minute_do()'))
timer.start(60000)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14227546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档