#!/usr/bin/env ruby require "qte" require "qpe" include Qte include Qpe class SampleWindow < QWidget def initialize() super() # resize(300, 324) @fmenu = QPopupMenu.new(self) @fmenu.insertItem(tr("終了"), self, 'bye', 0) @mb = QMenuBar.new(self) @mb.insertItem(tr("ファイル(&F)"), @fmenu) @mb.setGeometry(0, 0, 300, 24) setBackgroundMode(QWidget::NoBackground) @offscreenBuffer = nil @px = @py = nil catchEvent end def bye self.close() end def mousePressEvent(ev) @px = ev.x() @py = ev.y() end def mouseMoveEvent(ev) pa = QPainter.new() pa.begin(@offscreenBuffer) if @px != nil pen = QPen.new(QColor("blue"), 4, QWidget::SolidLine) pa.setPen(pen) # 線を描く #pa.drawLine(self.px, self.py, ev.x(), ev.y()) # 長方形を描く pa.drawRect(ev.x()-3, ev.y()-3, 6, 6) @px = ev.x() @py = ev.y() pa.end() repaint() end end def resizeEvent(ev) if @offscreenBuffer == nil @offscreenBuffer = QPixmap.new(ev.size()) @offscreenBuffer.fill(QWidget.white) else temp = QPixmap.new(@offscreenBuffer) @offscreenBuffer.resize(ev.size()) @offscreenBuffer.fill(QWidget.white) bitBlt(@offscreenBuffer, 0, 0, temp) end end def paintEvent(ev) bitBlt(self, 0, 0, @offscreenBuffer) 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