2010-10-22 62 views
0

我一直在使用QtJambi和JRuby設置Qt gui。到目前爲止,事情進展順利。我已準備好開始建立連接,但是,很多信號似乎並未從jruby中可見。例如,如果我打印出QPushButton的方法,我沒有看到任何稱爲「單擊」的方法來建立連接。從JRuby設置QtJambi連接

我發現這個鏈接關於QtJambi和Jython,這可能是相關的,但我不認爲這實際上是我的問題。

http://lists.trolltech.com/qt-jambi-interest/2007-03/thread00053-0.html

如何我可以讓我的Qt的這些信號反對JRuby的可視連接到?

+0

你能展示一些代碼的例子嗎? – 2010-10-29 00:19:59

回答

0

我從QtJambi郵件列表中得到了來自Vladimir Kirichenko的答案,這個答案清除了一些東西。

基本上,我們必須實現method_missing方法,該方法允許我在調用methods時看到信號。

class com.trolltech.qt.gui::QWidget 
    def method_missing(sym) 
    if sym.id2name.start_with?("signal_") 
     name = sym.id2name[7, sym.id2name.length] 
     f = self.getClass.fields.select {|f| f.name == name }.first 
     f.get(self) 
    else 
     nil 
    end 
    end 
end 

然後我就可以像做

$object_action.signal_changed.connect(...)