README for Ruby/Qt2(Qt v2.x) 
2002ǯ718

1.Ϥʤˤ

SWIG(http://www.swig.org/)SWIGRuby module(SWIG/Ruby, http://www.goto.info.waseda.ac.jp/%7Efukusima/ruby/swig-j.html)
Ѥruby(http://www.Ruby-lang.org/ja/)Qtѳĥ饤֥꡼äƤߤޤȤϡswigrubyexample˴ޤޤƤΤȯŸˤʤäƤޤ
Ruby/Qt2ϡQt library ver.2.x бΤǤ
ȯLinuxǹԤäƤޤޤVer. 0.14WindowsǤQt library(non-commercial version, 2.3.0)ˤбޤʤLinux(unix)ǤWindowsǤǤϥѥå˴ޤޤqt2_wrap.cppΤߡ줾δĶˤäưۤʤޤΤǡɬפ˹碌ꤷƤ
LinuxǤruby-qt2-x.xx.tar.gzޤruby-qt2-x.xx.rpmWindowsǤruby-qt2-x.xxmswin32.lzhȤʤäƤޤޤWindowsǤΥѥˤMS-Visual C++ ver.6ɬפǤ
(Qt librarynon-commercial versionѤˤnon-comercial licence褯ɤǤѤƤ
Rubyϥ֥ȻظΥץȸǤܤϾΥ֥Ȥ򻲾
Ƥ
QtTroll Tech(http://www.troll.no)X window system widgetޤ९饹饤֥꡼Ǥγĥ饤֥꡼Ѥȡ㤨мΤ褦˥ץȤळȤǤޤ

--------
#!/usr/local/bin/ruby
require 'qt2'
include Qt2
a = QApplication.new([$0] + ARGV)
hello = QPushButton.new('Hello world!')
hello.resize(100, 30)
connect( hello, QSIGNAL('clicked()'), a, QSLOT('quit()'))
a.setMainWidget(hello)
hello.show
a.exec
----ޤ----

2.󥹥ȡλ
2-1.Linuxξ
2-1-1. ̻

Ķϰʲ̤Ǥ
linux 2.4.18 on i686 (Redhat 7.2)

¹ԤˤϰʲΤΤ򥤥󥹥ȡ뤹ɬפޤ
ruby (1.6ʾ)
qt-x11-2.3.1.tar.gz
Qt饤֥꡼ˤhttp://www.kde.gr.jpꤷܸб
ѥåƤΤѤޤ

ʤե뤽ΤΤκˤ
swig1.3.13.tar.gz
Ѥޤĥ饤֥꡼Υѥˤɬפޤ

2-1-2. rpmѥåѤ硣
Хʥ꡼ѥåѥåȤ̾ˡǥ󥹥ȡ뤷ƤХʥ꡼Redhat 7.2 ǺƤޤ⤷ۤʤǥȥӥ塼ѤƤϡѥå(src.rpm)ƤߤƤ
ջ
rubyʤɬפʥץबrpmȤƥ󥹥ȡ뤵Ƥʤ硢¸åǥ顼Ǥ礬ޤξˤ--nodepsʤɤäƥ󥹥ȡ뤷Ƥ
ʤˤꤷʤ硢prefixȤơ/usrѤ/usr/lib/ruby/1.6/site-rubyʲ˥ե򥤥󥹥ȡ뤷ޤѤƤRubyξ꤬ۤʤπprefix=...Ѥƥ󥹥ȡ뤷Ƥ
rubyΥѥåˤäơ饤֥꡼(*.so, qt2.rbʤ)󥹥ȡ뤵꤬ۤʤ礬ޤqt2.soʤɤ˥󥹥ȡ뤵Ƥ뤳ȤǧƤrubyΥ饤֥꡼򤪤٤ϡʲˡǳǧǤޤ
consoleirbư$LOAD_PATHͤĴ٤롣

>irb
irb(main):001:0> $LOAD_PATH
["/usr/lib/ruby/site_ruby/1.6", "/usr/lib/ruby/site_ruby/1.6/i686-linux", "/usr/lib/ruby/site_ruby", "/usr/lib/ruby/1.6", "/usr/lib/ruby/1.6/i686-linux", "."]
irb(main):002:0> 

examplesʤɤ(prefix)/share/doc/ruby-qt2-xxxʲˡޤʤɤ/share/doc/ruby_qt2/ʲ˥󥹥ȡ뤵ޤ
ex)
rpm -Uvh ruby-qt2-xxx.i386.rpm
ޤϡ
rpm --rebuild ruby-qt2-xxx.src.rpm
rpm -Uvh /usr/src/redhat/RPM/i386/ruby-qt2-xxx.i386

2-1-2. tar.gz ΥѥåѤ硣


󥹥ȡϡΥѥåŬʤȤŸ塢Qt(v.2.0)饤֥꡼Υ󥹥ȡ뤷ƤĶѿQTDIRǻꤷ(export QTDIR=... ޤ setenv QTDIR ...ʤɡ setup.rbѤƥ󥹥ȡ뤷Ƥ
̾ϡ
ruby setup.rb config
ruby setup.rb setup
(change to root)
ruby setup.rb install
OKǤ
OpenGLʤɬפʥ饤֥꡼ʤΥ⥸塼ǥ顼ΤǤ뤳Ȥޤξ
ruby setup.rb --without=qt2gl
ʤɤȤƥ󥹥ȡ뤷Ƥ


(qt2.soqt2.rbŬڤʾꡢȤС/usr/local/lib/ruby/1.6/i586-linux
/usr/local/lib/ruby/1.6ʤɤ˥ԡ줿ȤǧƤ


2-2. Windowsξ

ºݤ˻ѤĶWindows2000, MS Visual C++ v.6 rel.5Ǥ
rubymswin32ǤѤޤcygwin, mingwưϤ狼ޤ
ޤQt libraryWindowsǤ򥤥󥹥ȡ뤷Ƥɬפޤ

lzhǰ̤ƤեŬʥǥ쥯ȥ꡼ŸƤ

ʲLinuƱͤsetup.rbѤƥ󥹥ȡ뤷Ƥ



(qt2.soqt2.rbŬڤʾꡢȤСc:\usr\local\lib\ruby\1.6\i586-linux
c:\usr\local\lib\ruby\1.6ʤɤ˥ԡ줿ȤǧƤ



3.ޤޤƤե뤽Τۤ
a.ǥ쥯ȥ꡼˴ޤޤƤեϼ̤Ǥ

extconf.rb...    Makefile뤿Ruby script

moc_qrobject.cc  moc_rsignal.cc moc_rslot.cc ... Qt library
moc(metaobject compiler)ˤäƺ줿ե

qrbfunction.cc qrbfunction.h qreventfilter.cc
qr2eventfilter.hqrobject.ccqrobject.h
rsignal.cc rsignal.h rslot.cc qt_wrap.h
qrmovie.h qrmovie.cc etc.... Qt ĥ饤֥꡼Ѥ饹ʤ

qt2_wrap.cc ... swigrubyˤ󥿡եʬޤॽ


lib/qt2.rb ... Qtĥ饤֥꡼ؿޤRuby script

b.Qt library  moduleˤĤ
Qt libraryǤϡopenGL˴Ϣ饹moduleȤ󶡤Ƥޤ
̾ϼưŪǧΤȤ߹ޤޤOpenGLʤɤlibraryѤƤʤˤȤ߹ޤޤ
Ruby/QtǤmoduleȤʤäƤʬΩlibraryȤƥɤǤ褦ˤƤޤ
(setup.rb configǤʤˤꤷʤС٤ƥ󥹥ȡ뤵ޤ

WindowsξϡmakeΤnmake(Visual C++make)ѤƤ

Windows98/Me/2000ξ硢Openglɬפʥ饤֥꡼OS˴ޤޤƤޤޤإåեMS Visual C++˴ޤޤƤޤ

4.Ȥʤɡ
ѥåˡQttutorialexampleRuby/qtǽľΤޤޤƤޤΤǡͤˤƤޤexample/classbrowsʲqt2brows3.rb¹ԤQt⥸塼˴ޤޤ륯饹ȴؿΰɽޤ

* 
QtC++ǻȤȤμϰʲ̤Ǥ

a.饹̾ؿ̾ϤۤȤQt-C++ƱǤ¿Ƥ
ΤˤĤƤϡ줾̤̾դƤޤver.0.13϶̤̾դΤᡢQt-C++Ʊ̾δؿȤ褦ˤƤޤ

b.C++줿ؿΥСɤϴŪˤǤƤޤ󡣤R
ubyǤΥ饹initializecatchEvent¹Ԥȡ٥ȴϢδ
ˤĤƤϥСɤǤ褦ˤʤޤȤƤϡ tutorialt14.rbʤɤ򸫤ƤˤޤΥ饹ǤϡQRϤޤ륯饹C++ǽ񤯤ȤˤꡢХå褦ˤƤޤ(QRFileDialog 饹ʤ)
¤ϡŪˤSWIGѤƼưŪWrapperؿƤ뤿ǤSWIGǤϡC++Υ饹ޤ褦ʥɤʤΤǡC++ǤProtectedδؿ䥪СɤΤ褦ʥ饹¤˰¸褦ʵϻȤޤ󡣥٥ȴؿѤǤΤQt libraryεǽǤ륤٥ȥե륿ؿѤƥ٥ȤեårubyδؿϤƤ뤿ǤԤȤƤϤʬּȴȻפäƤΤǡŪˤϥ饹¤Ĥ褦Wrapperؿ񤤤ƲȹͤƤޤΤˤϡSWIGѤʤץɬפʤᾯѤ⤷ޤ󡣰ߤpythonQt bindingǤϡSIPȤpythonȼWrapperץѤƤ褷Ƥ褦Ǥ

c.ʥΥͥȤϡQt-C++ǤΥʥ롢åȤRuby
ʥ롢å(RubyΥåȤȤƤϡѥ֥åʴؿ٤ƤȤȤǤޤ)δ֤ǤǤ褦ˤƤޤQtƤΤQSIGNAL,QSLOTǰϤǻȤäƤޤRubyǥʥǤQtC++ǻȤȰۤʤޤˤĤƤϡexample/signalexample/dclock򻲹ͤˤƤ
QSIGNALQSLOTѤ뤳ȤΤǤϰʲ̤Ǥ
(QListViewItem*)
(QListViewItem*,const QPoint&)
(QListBoxItem*,const QPoint &)
(QListBoxItem*)
(int,QIconViewItem*,const QPoint&)
(QIconViewItem*)
(QIconViewItem*,constQPoint&)
(QDropEvent*)
(const QColor&)
(const QRect&)
(const QSize&)
(VALUE*)
(const QString&)
(const char*)
(bool)
(double)
(int)

5.ռ
RubySWIG,swigrubyκԤ˴դޤޤꡢruby-listѻͤˤʤޤ

ʤۤΤۤϰʲˤꤤޤ
horie@smail.u-shizuoka-ken.ac.jp
ޤruby-list, ruby-ext⸫ƤޤΤǡꤤޤ

COPYING
see COPYING file.

QT-ruby requires the Qt library, which is copyright Troll Tech AS. Free distributable programs may generally use At Free Edition free of charge, see appropriate file for detail.

**************************************
Nobuyuki Horie, Ph.D.
Lab. Genetic Engineering/Univ. of Shizuoka
mail: horie@smail.u-shizuoka-ken.ac.jp
home page: http://www.u-shizuoka-ken.ac.jp