hakeの日記

Windows環境でプログラミングの勉強をしています。

サブウィンドウをつくる

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