サブウィンドウをつくる
Ruby/Qteの勉強 その12
サブウィンドウを作ってみる。サブウィンドウ用のクラスSubWindowはQDialogクラスより派生させて作成するのが普通らしい。サブウィンドウはウィンドウを閉じるボタンをひとつ配置するだけの構成とする。
class SubWindow < QDialog
SampleWindowクラス内にサブウィンドウを開くメソッドopenSubWindowを作成、ボタン1を押すことで呼ぶようにする。内容はSubWindowのインスタンスswを定義して.execメソッドで実行?させる。
def openSubWindow sw = SubWindow.new(self) sw.exec() #サブウィンドウを開く end
ボタン1を押すとサブウィンドウが開き、“閉じる”ボタンを押すと閉じる。
#!/usr/bin/env ruby require "qte" require "qpe" include Qte include Qpe class SampleWindow < QMainWindow def initialize() super() setCaption(tr("サンプル")) @msg = QLabel.new(tr("これはサンプルプログラム"),self) @msg.setGeometry(10,10,300,30) @pb1 = QPushButton.new(tr("ボタン1"),self) @pb1.setGeometry(320,5,100,30) connect(@pb1,QSIGNAL("clicked()"), self, 'openSubWindow') end def openSubWindow sw = SubWindow.new(self) #インスタンス作成 sw.exec() #サブウィンドウを開く end end class SubWindow < QDialog #サブウィンドウ用のクラス def initialize(parent) #parentが必要 super() setCaption(tr("サブウィンドウ")) setFixedSize(400,200) #ウィンドウサイズ指定 @pb = QPushButton.new(tr("閉じる"),self) #閉じるボタン @pb.setGeometry(150,85,100,30) connect(@pb,QSIGNAL("clicked()"), self, 'closeSubWindow') end def closeSubWindow #サブウィンドウを閉じる close() end end $defaultCodec = QTextCodec.codecForName("utf8") app = QPEApplication.new([$0]+ARGV) app.setDefaultCodec($defaultCodec) QApplication.setFont(QFont.new("lcfont",18)) app.showMainWidget(SampleWindow.new) app.exec