[QtRuby] uiファイルの利用2(QUiLoader)
QtにはQUiLoaderクラスってのがあるらしく、これを利用すると先日の方法を使わなくてもuiファイルを読み込めるみたいなので試してみた。
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
完成品
QUiLoaderクラスはQtUiToolsモジュールなので、QtRubyからQt::UiLoaderを利用するには'qtuitools'をrequireしておく必要がある。
これがわからずに1時間悩んだ・・・orz
2. 出来たけど・・・
uiファイルを読み込んでウィンドウ表示は出来たけど、表示しただけ・・・
uiファイルの中で定義されているヴィジェットへのアクセス方法がわからず、スロット定義とコネクト文が書けなかった・・・
なので、ボタンを押しても何も反応しない。
また、uiファイルのロード方法に問題があるのか、ウィンドウタイトルがデフォルトの"ruby"になってる。MainWindowクラスを作らずに直にロードすればよかったのかしらん???
そもそも、QtのQUiLoaderなんてヘルプを少し見ただけで使ったことなんてないものなので、それをいきなりQtRubyで使おうなんて考えが甘々だった。
気が向いたら使い方を調べてみるけど、これはもういいかな。。。