Martin DeMello wrote:
> I have both qtruby and qt4-qtruby installed (via the gentoo ebuilds),
> and am trying to run the examples from qt4-qtruby-1.4.7. However, most
> of them are failing with "Unresolved constructor call". Here's a
> minimal failure case:
>
> irb(main):001:0> require 'Qt'
> => true
> irb(main):002:0>  app = Qt::Application.new([])
> => #<Qt::Application:0xb6a24bec name="irb">
> irb(main):003:0> button = Qt::PushButton.new("hello world")
> ArgumentError: unresolved constructor call Qt::PushButton
>
>         from /usr/lib/ruby/site_ruby/1.8/Qt/qtruby.rb:1367:in `initialize'
>         from /usr/lib/ruby/site_ruby/1.8/Qt/qtruby.rb:1367:in `call'
>         from /usr/lib/ruby/site_ruby/1.8/Qt/qtruby.rb:1367:in `try_initialize'
>         from /usr/lib/ruby/site_ruby/1.8/Qt/qtruby.rb:1366:in `catch'
>         from /usr/lib/ruby/site_ruby/1.8/Qt/qtruby.rb:1366:in `try_initialize'
>         from (irb):3:in `new'
>         from (irb):3
It's because you're picking up the Qt3 version of QtRuby which doesn't
have that constructor. If you install the Qt3 version after the Qt4
version the default when you do a require 'Qt' will be the Qt3 one. If
you install the Qt4 version of QtRuby after the Qt3 one, then the
default is Qt4 instead. Maybe use require 'Qt3' or require 'Qt4' to
make sure you get the right one.

In the Qt4 version 'qtruby.rb' was renamed 'qtruby4.rb', and so it is
easy to see from the trace above what went wrong.

-- Richard