Top > Ruby > Qte > QxBox
  • 配置を自在にコントロールする基本、QVBox, QHBox について。
  • ソースコードは utf-8 前提です。
  • 動作確認環境 : Ruby 1.8.4 + rubyqte 0.5.3

直接ラベルなどを配置する場合の問題点

 以下のコードはラベルを5つ配置するコードですが、「ラベル1」~「ラベル5」がすべて同一座標上に生成されてしまうので、「ラベル5」しか表示されない問題があります。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
#!/usr/bin/env ruby
require 'qte'
require 'qpe'
 
include Qte
include Qpe
 
class MainWindow < QMainWindow
  def initialize
    super
    self.setCaption(tr("(7) QxBox さんぷる"))
    @mylabel1 = QLabel.new(tr("ラベル1"), self)
    @mylabel2 = QLabel.new(tr("ラベル2"), self)
    @mylabel3 = QLabel.new(tr("ラベル3"), self)
    @mylabel4 = QLabel.new(tr("ラベル4"), self)
    @mylabel5 = QLabel.new(tr("ラベル5"), self)
  end
end
 
class MyApplication < QPEApplication
  def initialize
    super([$0]+ARGV)
    self.setDefaultCodec(QTextCodec::codecForName("utf-8"))
  end
end
 
app = MyApplication.new
win = MainWindow.new()
app.showMainWidget(win)
app.exec

縦方向に並べる QVBox

 QVBox を使うことにより、ウィンドウを縦複数行に均等に分割してウィジェット(ラベルやボタンなどのGUI部品のことです)を配置できます。

ポイントは QLabel.new の第2引数が QVBox 型の @mybox になっていることでしょう。

    self.setCaption(tr("(7) QxBox さんぷる"))
    @mybox = QVBox.new(self)
    self.setCentralWidget(@mybox)                  #ウィンドウ全体をこのウィジェットで覆う。
      @mylabel1 = QLabel.new(tr("ラベル1"), @mybox)
      @mylabel2 = QLabel.new(tr("ラベル2"), @mybox)
      @mylabel3 = QLabel.new(tr("ラベル3"), @mybox)
      @mylabel4 = QLabel.new(tr("ラベル4"), @mybox)
      @mylabel5 = QLabel.new(tr("ラベル5"), @mybox)
QVBox.png

横方向に並べる QHBox

 基本的には QVBox と同じです。QHBox の場合は、ウィンドウを横に均等に分割してウィジェットを配置となります。QVBox の部分を QHBox に置換して、試してみてください。

QHBox.png

QVBox と QHBox を組み合わせる

 QVBox や QHBox は組み合わせることも出来ます。QVBox.new(親ウィジェット) / QHBox.new(親ウィジェット) の親ウィジェットを別の QVBox / QHBox にすることで、縦横組み合わせの配置を設定することができます。

以下のコードは @mybox の中に @mybox_child というボックスを配置した例です。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
#!/usr/bin/env ruby
require 'qte'
require 'qpe'
 
include Qte
include Qpe
 
class MainWindow < QMainWindow
  def initialize
    super
    self.setCaption(tr("(7) QxBox さんぷる"))
    @mybox = QHBox.new(self)
    self.setCentralWidget(@mybox)
      @mybox_child = QVBox.new(@mybox)
        @mybtn1   = QPushButton.new(tr("ボタン1"), @mybox_child)
        @mylabel1 = QLabel.new(tr("ラベル1"), @mybox_child)
        @mylabel2 = QLabel.new(tr("ラベル2"), @mybox_child)
      @mylabel3 = QLabel.new(tr("ラベル3"), @mybox)
      @mylabel4 = QLabel.new(tr("ラベル4"), @mybox)
      @mylabel5 = QLabel.new(tr("ラベル5"), @mybox)
  end
end
 
class MyApplication < QPEApplication
  def initialize
    super([$0]+ARGV)
    self.setDefaultCodec(QTextCodec::codecForName("utf-8"))
  end
end
 
app = MyApplication.new
win = MainWindow.new()
app.showMainWidget(win)
app.exec
QxBox_mix.png

添付ファイル: fileQxBox_mix.png 206件 [詳細] fileQVBox.png 557件 [詳細] fileQHBox.png 571件 [詳細]

リロード   新規 下位ページ作成 凍結解除 差分 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Fri, 22 Jul 2011 21:57:57 JST (1525d)