2013-03-23 6 views
12

मंच:QtRuby फेंकना काम नहीं करता है

डार्विन * - * एस मैकबुक-Pro.local 11.4.2 डार्विन कर्नेल संस्करण 11.4.2: गुरु अगस्त 23 16:25:48 पीडीटी 2012; जड़: XNU-1699.32.7 ~ 1/RELEASE_X86_64 x86_64

रूबी:

माणिक 2.0.0p0 (2013-02-24 संशोधन 39,474) [x86_64-darwin11.4.2] (स्थापित rvm द्वारा)

क्यूटी:

क्यूटी: स्थिर 4.8.4 (बॉट tled), प्रमुख

कोड:

require 'Qt' 

class Foo < Qt::Object 

    signals :my_signal #also tried 'my_signal()' 
    slots 'my_slot()' 

    def initialize(parent = nil) 
     super(parent) 

     puts "connecting signal and slot" 
     Qt::Object.connect(self, SIGNAL('my_signal()'), self, SLOT('my_slot()')) 
     # also tried => connect(self, SIGNAL('my_signal()'), self, SLOT('my_slot()')) 

    end 

    def emit_my_signal 
     puts "sending signal" 
     emit my_signal 
    end 

    def my_slot 
     puts "received message from signal" 
    end 
end 


o = Foo.new 
o.emit_my_signal 

आउटपुट: Qt.debug_level = क्यूटी :: DebugLevel साथ

connecting signal and slot 
sending signal 

आउटपुट :: उच्च

Munged method names: 
     QObject$ 
     QObject? 
     QObject# 
candidate list: 
    QObject* QObject::QObject(QObject*) (smoke: 0 index: 3804) 
matching => smoke: 0 index: 3804 
     QObject* (u) score: 2 
     match => smoke: 0 index: 3804 score: 2 chosen: 3804 
setCurrentMethod(smokeList index: 0, meth index: 3804) 
connecting signal and slot 
Searching for QObject#connect 
Munged method names: 
     connect#$#$ 
candidate list: 
    static bool QObject::connect(const QObject*, const char*, const QObject*, const char*) (smoke: 0 index: 3850) 
matching => smoke: 0 index: 3850 
     const QObject* (QObject) score: 3 
     const char* (s) score: 1 
     const QObject* (QObject) score: 3 
     const char* (s) score: 1 
     match => smoke: 0 index: 3850 score: 8 chosen: 3850 
setCurrentMethod(smokeList index: 0, meth index: 3850) 
sending signal 

ऐसा लगता है कि उत्सर्जन कुछ भी नहीं करता है। मैंने qt और qtbindings को पुनर्स्थापित करने का भी प्रयास किया है, लेकिन समस्या अभी भी मौजूद है। और मैंने उसी मशीन पर सिग्नल और स्लॉट के साथ पीईक्यूटी की कोशिश की, यह एक आकर्षण की तरह काम करता है।

क्या किसी के पास इस बारे में कोई विचार है? क्या यह रूबी क्यूटीबिंडिंग का एक बग है या मैंने अभी कुछ गलत किया है?

+0

यह रूबी रूबी-2.0.0-पी 0 के लिए एक बग लगता है, qtbindings इस संस्करण के साथ अच्छी तरह से काम नहीं करता है। मैंने उसी मशीन पर रूबी-1.9.3-पी 3 9 2 की कोशिश की, यह काम करता है। – user2201409

+0

qtbindings 4.8.5.2 और रूबी 2.0.0p247 (2013-06-27 संशोधन 41674) के साथ मेरे लिए काम करता है [i686-linux] –

+0

आपका कोड उबंटू 15.10 पर qtbindings 4.8.6 के साथ काम करता है। – bogl

उत्तर

0

कोड सही साबित होता है। समस्या केवल रूबी और क्यूटीबिंडिंग संस्करणों के एक विशेष संयोजन के साथ प्रकट हुई, जो अब पुरानी हैं।

0

आमतौर पर, किसी भी सिग्नल को विश्वसनीय रूप से वितरित करने से पहले किसी को क्यूटी के ईवेंट लूप को शुरू करने की आवश्यकता होती है। मैं इसे आपके कोड में नहीं देखता हूं। अधिक विशेष रूप से, जो मुझे याद आ रहा है वह है:

app = Qt::Application.new(ARGV) 
app.exec 
संबंधित मुद्दे