ボタンをつくる
Ruby/Qteの勉強 その5
以下のようにQPushButtonクラスを使用することでボタンをつくることができる。
@pb1 = QPushButton.new(tr("ボタン1"),self) @pb1.setGeometry(320,5,100,30)
このままでは何も動作しないのでボタンをクリックしたときに実行させるメソッドcopy_eboxを作成してみる。このメソッドはテキストボックス@ebox1に書かれている内容を@ebox2にコピーする動作をする。
def copy_ebox naiyou = @ebox1.text.local8Bit.to_str @ebox2.setText(tr(naiyou)) end
ボタン@pb1とメソッドcopy_eboxを関連させるには以下のように記述
connect(@pb1,QSIGNAL("clicked()"), self, 'copy_ebox')
これで“ボタン1”をクリックするとテキストボックス@ebox1に書かれている内容が@ebox2にコピーされる。
#!/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,160,635,120) @ebox1.setText(tr("あいうえお")) @ebox2 = QMultiLineEdit.new(self) @ebox2.setGeometry(0,280,635,120) @ebox2.setReadOnly(true) @pb1 = QPushButton.new(tr("ボタン1"),self) @pb1.setGeometry(320,5,100,30) connect(@pb1,QSIGNAL("clicked()"), self, 'copy_ebox') end def copy_ebox naiyou = @ebox1.text.local8Bit.to_str @ebox2.setText(tr(naiyou)) 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