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-07-06(Wed)

リストビューをつくる

Ruby/Qte勉強 その14

リストビュー(表?)を作ってみる、使用するクラスはQListViewである。@listを作成したら、.addColumnメソッドでカラムを追加していく。

@list = QListView.new(self)
@list.setGeometry(0,40,635,230)
@list.addColumn(tr("カラム1"))  #カラム追加
@list.addColumn(tr("カラム2"))

アイテムの追加は、QListViewItemを使用する。引数はカラム数によって変化する。

QListViewItem.new(@list, "21", "22") #カラムが2つなのでセットする値も2つ

アイテムは上下カーソルキー+Enterや画面のタップで選択可能で、以下の記述で選択アイテムをメソッドに渡すことができる。

connect(@list, QSIGNAL("clicked(QListViewItem *)"), self, "dispItem")
connect(@list, QSIGNAL("returnPressed(QListViewItem *)"), self, "dispItem")

アイテム選択で、そのアイテムのデータを表示。ボタン1で全アイテムのカラム1のデータを表示するようにしてみる。

アイテム内のデータの表示はitem.text(0).to_strのようにする、引数はカラムの番号。なお、.to_sメソッドは使えなかった。

#!/usr/bin/env ruby

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


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

      @list = QListView.new(self)
      @list.setGeometry(0,40,635,230)
      @list.addColumn(tr("カラム1"))  #カラム追加
      @list.addColumn(tr("カラム2"))

#      @list.setAllColumnsShowFocus(true)         #フォーカス変更
#      2.times do |i|                             #2はカラム数
#         @list.setColumnWidth(i, 200)            #カラム幅変更
#         @list.setColumnAlignment(i, AlignRight) #右よせに
#         #@list.setColumnAlignment(i, AlignHCenter)
#      end

      #選択したアイテムをメソッドdispItemへ
      connect(@list, QSIGNAL("clicked(QListViewItem *)"), self, "dispItem")
      connect(@list, QSIGNAL("returnPressed(QListViewItem *)"), self, "dispItem")

      #@listにアイテム追加
      item = QListViewItem.new(@list, "11", "12")
      QListViewItem.new(@list, "21", "22")
      QListViewItem.new(@list, "31", "32")
      #値を書き換え
#      item.setText(0, "10")

      @ebox1 = QMultiLineEdit.new(self)
      @ebox1.setGeometry(0,280,635,120)
      @ebox1.setReadOnly(true)

      @ebox1.clear
      #カラム数を表示
      @ebox1.insertLine(tr("column数 = " + @list.columns.to_s))
      #アイテム数を表示
      @ebox1.insertLine(tr("item数 = " + @list.childCount.to_s))


      @pb1 = QPushButton.new(tr("ボタン1"),self)
      @pb1.setGeometry(320,5,100,30)
      connect(@pb1,QSIGNAL("clicked()"), self, 'dispCol')

   end

   def dispItem(item) #選択したアイテムのカラムを表示
      @ebox1.clear
      @ebox1.insertLine(tr("カラム1=" + item.text(0).to_str))
      @ebox1.insertLine(tr("カラム2=" + item.text(1).to_str))
#      @ebox1.insertLine(item.text(0).utf8().to_str())
   end

   def dispCol #全アイテムのカラム1を表示
      @ebox1.clear
      item = @list.firstChild()
      while (!item.nil?)
         @ebox1.insertLine(tr("col1=" + item.text(0).to_str))
         item = item.nextSibling()
      end
   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/20050706/p2