Stefano Crocco
3/4/2007 4:17:00 PM
Alle domenica 4 marzo 2007, Chris ha scritto:
> Hello everyone,
>
> I just started looking at trying to write some Qt stuff in ruby. I
> whipped up a quick widget in designer to see how the whole process
> works. When it came time to connect a button to a custom slot I got
> stuck. The docs on the internet that deal with designer are all qt3
> based. The search button on this forums website is broken, so sorry if
> this has been brought up already.
>
> Has anybody had any luck implementing custom slots in ruby without
> changing the output of rbuic4? Everything I have tried results in
> segfaults and superclass mismatch errors.
I've done this:
* create a custom_widget_base.ui with designer (suppose the form name is
CustomWidgetBase and that it contains a single push button,
named 'push_button')
* run rbuic4 on the file, getting custom_widget_base.rb. This file contains a
class called Ui_CustomWidgetBase, from which a class called CustomWidgetBase,
contained in a module called Ui, is derived.
* create the file custom_widget.rb with the following contents:
require 'custom_widget_base.rb' #require the rbuic4-generated file
class CustomWidget < Qt::Widget
slots 'button_pressed()'
def initialize parent=nil
super #call Qt::Widget constructor
@base=Ui::CustomWidgetBase.new
@base.setupUI self #this is where the widget construction happen
connect @base.push_button,SIGNAL('pressed()'),self,SLOT('button_pressed())
end
def button_pressed
Qt::MessageBox.information self, 'App', 'The button has been pressed'
end
end
As to connecting to custom slots directly from Qt designer, I haven't been
able to find out how to create custom slots in the designer. While in the Qt3
version there was a dialog to do that, it seems to have disappeared in the
new version. Even the examples in the designer manual only show connecting an
existing signal to an existing slot.
I hope this helps.
Stefano