Hatena::ブログ(Diary)

はけの徒然日記 このページをアンテナに追加 RSSフィード

2005 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 08 | 09 | 10 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 |
2011 | 01 | 02 | 03 | 04 | 11 | 12 |
2012 | 02 | 03 | 05 |
2014 | 02 | 03 | 04 | 05 | 12 |
2015 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 04 | 05 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 |

2005-08-05(Fri)

ウィジェットの切り替え その2

Ruby/Qte勉強 その22

画面の一部を切り替える場合を考える、切り替えるエリアは前回と同じくQWidgetクラスインスタンス@w0と@w1を用意してQWidgetStackのインスタンス@stackにaddWidgetしている。

画面構成を上から順にテキストボックス@ebox、@stack、ボタン@pbとして、QVBoxLayoutクラスインスタンス@layに順番にaddWidgetしていく、@stackをaddWidgetしている部分の第2引数の“1”はこのエリアを伸長させる為である。

ターミナルから実行すると妙なメッセージが表示されるのが気になる(エラーではないけど)

#!/usr/bin/env ruby

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


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

      @stack = QWidgetStack.new(self)  #スタック作成

      @w0 = QWidget.new( @stack )      #ウィジェット0作成
      @w1 = QWidget.new( @stack )      #ウィジェット1作成
      @stack.addWidget( @w0, 0 )       #スタックに追加
      @stack.addWidget( @w1, 1 )

      #ウィジェット0の配置
      @msg0 = QLabel.new(tr("ウィジェット0のエリア"), @w0)
      @msg0.setGeometry(10,10,300,100)
      #ウィジェット1の配置
      @msg1 = QLabel.new(tr("ウィジェット1\nのエリア"), @w1) 
      @msg1.setGeometry(10,10,300,100)


      @current = 0
      @stack.raiseWidget( @current )  #表示するウィジェットを指定


      @ebox = QLineEdit.new( self )
      @pb = QPushButton.new(tr("ボタン"), self)
      connect(@pb,QSIGNAL("clicked()"), self, 'chgWidget')

      #画面レイアウト
      @lay = QVBoxLayout.new( self )
      @lay.addWidget( @ebox )         #上部
      @lay.addWidget( @stack, 1)      #中央を広げる
      @lay.addWidget( @pb )           #下部

   end

   def chgWidget     #ウィジェットの表示切替え
      if @current == 1 then
         @current = 0
      else
         @current = 1
      end
      @stack.raiseWidget( @current )
   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

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/hake/20050805/p2