チェックボックスとラジオボタン
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