2013-03-23 15 views
12

vBulletin:QtRuby phát ra không làm việc

Darwin * - * s-MacBook-Pro.local 11.4.2 Darwin Kernel Version 11.4.2: Thu 23 tháng 8 16:25:48 PDT 2012; root: xnu-1699.32.7 ~ 1/RELEASE_X86_64 x86_64

của Ruby:

ruby ​​2.0.0p0 (2013/02/24 sửa đổi 39.474) [x86_64-darwin11.4.2] (cài đặt bởi RVM)

Qt:

qt: ổn định 4.8.4 (bot tled), HEAD

:

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 

Output:

connecting signal and slot 
sending signal 

Output với Qt.debug_level = Qt :: DebugLevel :: cao

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 

có vẻ như phát ra không làm gì cả. Tôi cũng đã thử cài đặt lại qt và qtbindings, nhưng vấn đề vẫn tồn tại. Và tôi cũng thử PyQt với tín hiệu và khe cắm trên cùng một máy, nó hoạt động như một sự quyến rũ.

Có ai có bất kỳ ý tưởng nào về điều này không? Đó có phải là một lỗi của qtbindings ruby ​​hoặc tôi chỉ làm điều gì sai?

+0

Dường như lỗi của ruby ​​ruby-2.0.0-p0, qtbindings không hoạt động tốt với phiên bản này. Tôi đã thử ruby-1.9.3-p392 trên cùng một máy, nó hoạt động. – user2201409

+0

hoạt động cho tôi với qtbindings 4.8.5.2 và ruby ​​2.0.0p247 (2013-06-27 phiên bản 41674) [i686-linux] –

+0

Mã của bạn hoạt động trên Ubuntu 15.10 với qtbindings 4.8.6. – bogl

Trả lời

0

Mã này có vẻ chính xác. Vấn đề chỉ được biểu hiện với một sự kết hợp đặc biệt của các câu hỏi về ruby ​​và qtbindings, mà bây giờ đã lỗi thời.

0

Thông thường, người ta cần bắt đầu vòng lặp sự kiện của Qt trước khi bất kỳ tín hiệu nào có thể được phân phối một cách đáng tin cậy. Tôi không thấy điều đó trong mã của bạn. Cụ thể hơn, những gì tôi thiếu là:

app = Qt::Application.new(ARGV) 
app.exec 
Các vấn đề liên quan