2013-01-09 55 views
3

我正在OSX上編寫一個使用QtRuby的時間日誌記錄應用程序。重要的是它定期提醒用戶(我的團隊)記錄他們的時間,最好是通過前臺(如有必要,最小化)。這是非常像mac,所以我會接受一個彈跳的任務托盤圖標。我無法去上班。OSX上的QtRuby恢復定時器上的最小化窗口

不管怎樣,我已經試過以下

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 盧克

回答

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) 
相關問題