hakeの日記

Windows環境でプログラミングの勉強をしています。

チェックボックスとラジオボタン

Ruby/Qteの勉強 その9

チェックボックスラジオボタンを作成する場合には以下の様におこなう

@cbox1 = QCheckBox.new(tr("チェック1"),self)
@radio1 = QRadioButton.new(tr("ラジオ1"),self)

これでペンにより選択/解除を行うことができる。現在の状態を知る場合には.isCheckedを使用し、プログラムで選択/解除を行う場合には.setCheckedを使用する。以下は現在の状態を反転させるメソッド

def reverse_c
   if @cbox1.isChecked then
      @cbox1.setChecked(false)
   else
      @cbox1.setChecked(true)
   end
end

ラジオボタンをグループ化するには以下のようにする(05/06/30追加)

bg = QVButtonGroup.new(self)
bg.setTitle("Item")
bg.setGeometry(10,50,600,160)

@r1 = QRadioButton.new("radio1", bg)
@r1.setChecked(true)
@r2 = QRadioButton.new("radio2", bg)
@r3 = QRadioButton.new("radio3", bg)
@r4 = QRadioButton.new("radio4", bg)


チェックボックスラジオボタンを反転させるメソッドをボタン1と2に割り当ててみました。

class SampleWindow < QMainWindow
   def initialize()
      super()
      setCaption(tr("サンプル"))
      @msg = QLabel.new(tr("これはサンプルプログラム"),self)
      @msg.setGeometry(10,10,300,30)

      @cbox1 = QCheckBox.new(tr("チェック1"),self)
      @cbox1.setGeometry(0,50,300,30)

      @radio1 = QRadioButton.new(tr("ラジオ1"),self)
      @radio1.setGeometry(0,80,300,30)

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

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

      @pb2 = QPushButton.new(tr("ボタン2"),self)
      @pb2.setGeometry(425,5,100,30)
      connect(@pb2,QSIGNAL("clicked()"), self, 'reverse_r')
   end

   def reverse_c        #チェックボックスの状態反転
      if @cbox1.isChecked then
         @cbox1.setChecked(false)
         @ebox1.setText(tr("チェック解除しました"))
      else
         @cbox1.setChecked(true)
         @ebox1.setText(tr("チェックしました"))
      end
   end

   def reverse_r         #ラジオボタンの状態反転
      if @radio1.isChecked then
         @radio1.setChecked(false)
         @ebox1.setText(tr("選択解除しました"))
      else
         @radio1.setChecked(true)
         @ebox1.setText(tr("選択しました"))
      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