hakeの日記

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

自動で配置させる

Ruby/Qteの勉強 その7

テキストボックスやボタン等を配置する場合には.setGeometryを使用しますが、もっと単純に横(あるいは縦)に並べる場合はQHBox(あるいはQHVBox)クラスを使用する。

h1 =  QHBox.new(self)
setCentralWidget(h1)               #これがないと上手くいかない
   @ebox1 = QMultiLineEdit.new(h1) #カッコ内がselfでなくh1
   @ebox2 = QMultiLineEdit.new(h1) #  同上
   @ebox3 = QMultiLineEdit.new(h1) #  同上

とするとテキストボックスは横に並び、

v1 =  QVBox.new(self)
setCentralWidget(v1)               #これがないと上手くいかない
   @ebox4 = QMultiLineEdit.new(v1) #カッコ内がselfでなくv1
   @ebox5 = QMultiLineEdit.new(v1) #  同上
   @ebox6 = QMultiLineEdit.new(v1) #  同上

とすると縦にならぶ。

#!/usr/bin/env ruby

require "qte"
require "qpe"
include Qte
include Qpe


class SampleWindow < QMainWindow
   def initialize()
      super()
      setCaption(tr("サンプル"))

      h1 =  QHBox.new(self)
      setCentralWidget(h1)               #これがないと上手くいかない
         @ebox1 = QMultiLineEdit.new(h1) #カッコ内がselfでなくh1
         @ebox2 = QMultiLineEdit.new(h1) #  同上
         @ebox3 = QMultiLineEdit.new(h1) #  同上
#      v1 =  QVBox.new(self)
#      setCentralWidget(v1)               #これがないと上手くいかない
#         @ebox4 = QMultiLineEdit.new(v1) #カッコ内がselfでなくv1
#         @ebox5 = QMultiLineEdit.new(v1) #  同上
#         @ebox6 = QMultiLineEdit.new(v1) #  同上

      @ebox1.setText(tr("テキストボックス1"))
      @ebox2.setText(tr("テキストボックス2"))
      @ebox3.setText(tr("テキストボックス3"))
#      @ebox4.setText(tr("テキストボックス4"))
#      @ebox5.setText(tr("テキストボックス5"))
#      @ebox6.setText(tr("テキストボックス6"))
   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