ボタンを無効にする
Ruby/Qteの勉強 その6
なにかの処理をさせている間、誤ってボタンを押さないように無効にしたい場合がある。その場合は
@pb1.setEnabled(false)
の様にすると無効化できる。
昨日のスクリプトにボタン@pb2を追加して@pb1の有効/無効を変化させてみる。@pb1の状態を@en_pb1に設定して以下のメソッドctrl_pb1で@pb1の有効/無効を反転させる。このメソッドを@pb2に関連させてみる。
@en_pb1 = true @pb2 = QPushButton.new(tr("ボタン2"),self) @pb2.setGeometry(425,5,100,30) connect(@pb2,QSIGNAL("clicked()"), self, 'ctrl_pb1')
def ctrl_pb1 @en_pb1 = !@en_pb1 @pb1.setEnabled(@en_pb1) end
これでボタン2を押すごとにボタン1が有効/無効状態が反転する。
#!/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') @en_pb1 = true #ボタン1の初期状態:有効 @pb2 = QPushButton.new(tr("ボタン2"),self) @pb2.setGeometry(425,5,100,30) connect(@pb2,QSIGNAL("clicked()"), self, 'ctrl_pb1') end def copy_ebox naiyou = @ebox1.text.local8Bit.to_str @ebox2.setText(tr(naiyou)) end def ctrl_pb1 @en_pb1 = !@en_pb1 #ボタン1の状態を反転 @pb1.setEnabled(@en_pb1) #ボタン1に反映させる 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