From: Stefano Crocco Date: 2007-03-05T01:17:13+09:00 Subject: Re: Qt4 designer, custom slots and rbuic4 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