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-09(Tue)

タブによる切り替え

Ruby/Qte勉強 その23

本当はメインウィンドウ内でタブによる切り替えをしたかったのだけど、QTabBarはnewメソッドがないと怒られたので、サブウィンドウで実験してみる。(追記:QTabWidgetで実現できると氏家さんよりコメントいただきましたありがとうございます。こちらは明日実験)



サブウィンドウ用のクラスSubWindowをQTabDialogを継承させて作る。切り替え表示させるウィジェット@w0,@w1を作成して、addTabで追加する。ボタンは何もしなくてもOKボタンが追加されるけど、表示する文字を指定したい場合は明示的に指定する。呼び出し側に対してOKが押された場合は1を、キャンセルが押された場合は0を返す。

適用ボタンが押された場合にpushApplyメソッドを呼ぶようにしてみたけど、OKボタンを押した場合でも呼ばれるのがよく判らない。

#!/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)


      $ebox1 = QMultiLineEdit.new(self)
      $ebox1.setGeometry(0,200,635,200)
      $ebox1.setReadOnly(true)

      @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)
      $ebox1.clear
      $ebox1.insertLine("Open Sub Window")
      res = sw.exec()
      $ebox1.insertLine("Close Sub Window")
      $ebox1.insertLine("res = " + res.to_s)
   end
end

class SubWindow < QTabDialog
   def initialize(parent)
      super( nil, "", true) 
      setCaption(tr("サブウィンドウ"))
      setFixedSize(400,200) #サイズ指定

      @w0 = QWidget.new( self )      #ウィジェット0作成
      @w1 = QWidget.new( self )      #ウィジェット1作成
      addTab( @w0, tr("ウィジェット0") )  #タブに追加
      addTab( @w1, tr("ウィジェット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)

      setOkButton(tr("おっけー"))
      setCancelButton(tr("きゃんせる"))
      setApplyButton(tr("適用"))

      connect(self, QSIGNAL("applyButtonPressed()"), self, 'pushApply')
   end

   def pushApply
      $ebox1.insertLine(tr("適用が押された"))
   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

UjipUjip 2005/08/10 19:27 QTabWidgetを利用されれば、メインウィンドウ内でタブ切り替えができると思いますが、いかがでしょうか。

hakehake 2005/08/10 20:29 できました、てっきりQTabBarで実現すると思い込んで他のクラスを見てませんでした(^^;
ご指摘感謝です。

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

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


画像認証

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