[QtRuby] uiファイルの利用2(QUiLoader)

QtにはQUiLoaderクラスってのがあるらしく、これを利用すると先日の方法を使わなくてもuiファイルを読み込めるみたいなので試してみた。

0. uiファイルの準備

新たに用意するのメンドクサイので、uiファイルは前回と同様のコレ。

mainwindow.ui

f:id:izumisannoid:20121202230311j:plain

1. QUiLoaderでuiファイルをロード

Qtをほとんど使ったことがないので、何をするにもヘルプを見なければ進まない。
ヘルプが英語でナナメ読みどころか意味すらさっぱりだけど、とりあえずヘルプを見ながらQtRubyで書いてみた。

sampleuiloader.rb
require 'qt4'
require "mainwindow.rb"
app = Qt::Application.new(ARGV)
w = MainWindow.new
w.show
app.exec
mainwindow.rb
require 'qt4'
require 'qtuitools'

class MainWindow < Qt::MainWindow
  def initialize
    super
    
    file = Qt::File.new("./mainwindow.ui")
    file.open(Qt::File::ReadOnly)
    loader = Qt::UiLoader.new
    @widget = loader.load(file)
    setCentralWidget(@widget)
    file.close
  end
end
完成品

f:id:izumisannoid:20121205211023j:plain

QUiLoaderクラスはQtUiToolsモジュールなので、QtRubyからQt::UiLoaderを利用するには'qtuitools'をrequireしておく必要がある。
これがわからずに1時間悩んだ・・・orz

2. 出来たけど・・・

uiファイルを読み込んでウィンドウ表示は出来たけど、表示しただけ・・・
uiファイルの中で定義されているヴィジェットへのアクセス方法がわからず、スロット定義とコネクト文が書けなかった・・・
なので、ボタンを押しても何も反応しない。

また、uiファイルのロード方法に問題があるのか、ウィンドウタイトルがデフォルトの"ruby"になってる。MainWindowクラスを作らずに直にロードすればよかったのかしらん???

そもそも、QtのQUiLoaderなんてヘルプを少し見ただけで使ったことなんてないものなので、それをいきなりQtRubyで使おうなんて考えが甘々だった。

気が向いたら使い方を調べてみるけど、これはもういいかな。。。