hakeの日記

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

クリップボードの使用

Ruby/Qteの勉強 その16

クリップボードを使用するにはクリップボードインスタンスを作成して、それに対してメソッドで情報のやりとりを行えば良い。

@cb = QApplication::clipboard

今回は2個のボタンにそれぞれテキストボックスからクリップボードへのコピーとクリップボードからテキストボックスへのコピーを行うメソッドを割り当ててみた。

#!/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)

      #クリップボードのインスタンス作成
      @cb = QApplication::clipboard

      @ebox1 = QMultiLineEdit.new(self)
      @ebox1.setGeometry(0,200,635,200)

      @pb1 = QPushButton.new(tr("コピー"),self)
      @pb1.setGeometry(320,5,100,30)
      connect(@pb1,QSIGNAL("clicked()"), self, 'toCB')

      @pb2 = QPushButton.new(tr("貼り付け"),self)
      @pb2.setGeometry(425,5,100,30)
      connect(@pb2,QSIGNAL("clicked()"), self, 'fromCB')

   end

   def toCB  #クリップボードへコピー
      @cb.setText(tr(@ebox1.text.local8Bit.to_str))
   end

   def fromCB #クリップボードから追加コピー
      @ebox1.insertLine(tr(@cb.text.local8Bit.to_str))
   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