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 | 06 | 07 | 08 | 10 |

2005-08-02(Tue)

ウィジェットの切り替え

Ruby/Qte勉強 その21

ウィジェットを予め複数用意しておいてスタックすることで、簡単に切り替えて使用することができる。画面の切り替え等に使用が可能。

使用する数だけのQWidgetのインスタンスを用意し、QWidgetStackのインスタンスに.addWidgetすることでスタックする。実際に使用するボタンテキストボックス等は各QWidgetのインスタンス上に配置させる。スタックする際に各ウィジェットに番号をつけておくことで、.raiseWidgetでその番号を指定してウィジェットを切り替える。

下の例では2個のウィジェット@w0と@w1を用意して、ボタンを押すことで切り替えを行っている。

#!/usr/bin/env ruby

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


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

      @stack = QWidgetStack.new(self)  #スタック作成
      setCentralWidget(@stack)         #@stackをウィンドウ全体に広げる

      @w0 = QWidget.new( @stack )      #ウィジェット0作成
      @w1 = QWidget.new( @stack )      #ウィジェット1作成
      @stack.addWidget( @w0, 0 )       #スタックに追加
      @stack.addWidget( @w1, 1 )
 
      @current = 0
      @stack.raiseWidget( @current )  #表示するウィジェットを指定

      #ウィジェット0の配置
      @msg0 = QLabel.new(tr("ウィジェット0"), @w0)
      @msg0.setGeometry(10,10,300,30)
      @ebox0 = QMultiLineEdit.new( @w0 )
      @ebox0.setGeometry(0,280,635,120)
      @pb0 = QPushButton.new(tr("ボタン0"), @w0)
      @pb0.setGeometry(320,5,100,30)
      connect(@pb0,QSIGNAL("clicked()"), self, 'chgWidget')

      #ウィジェット1の配置
      @msg1 = QLabel.new(tr("ウィジェット1"), @w1)
      @msg1.setGeometry(10,10,300,30)
      @ebox1 = QMultiLineEdit.new( @w1 )
      @ebox1.setGeometry(0,250,635,150)
      @pb1 = QPushButton.new(tr("ボタン1"), @w1)
      @pb1.setGeometry(420,5,100,30)
      connect(@pb1,QSIGNAL("clicked()"), self, 'chgWidget')
   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/20050802/p1
リンク元