You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdebindings/qtruby/rubylib/examples/canvastest/canvastest.rb

76 lines
2.0 KiB

#!/usr/bin/env ruby -w
require 'Qt'
require 'rexml/document'
require '../base/kicons.rb'
require '../base/rui.rb'
class MyCanvasView < Qt::CanvasView
def initialize(canvas, parent)
@canvas = canvas
super(canvas, parent)
end
def contentsMousePressEvent(e)
super
list = canvas.collisions(e.pos)
return if list.empty?
c = list.first
return if c.rtti != Qt::CanvasItem::Rtti_Rectangle
c.hide
@canvas.update
end
end
class MyWidget < Qt::MainWindow
slots 'new()', 'open()', 'save_as()'
def make_rect
rect = Qt::CanvasRectangle.new(rand(@canvas.width()), rand(@canvas.height()),
@canvas.width / 5, @canvas.width / 5, @canvas)
z = rand(256)
color = Qt::Color.new(z,z,z)
rect.setBrush(Qt::Brush.new(color))
color = Qt::Color.new(rand(32)*8, rand(32)*8, rand(32)*8)
rect.setPen(Qt::Pen.new(color, 6))
rect.setZ(z)
rect.show
@rects << rect
end
def initialize()
super
fileTools = Qt::ToolBar.new(self, "file operations")
fileMenu = Qt::PopupMenu.new(self)
actions = [
RAction.new("&New", Icons::FILE_NEW, self, SLOT('new()'), [fileTools, fileMenu]),
RAction.new("&Open...", Icons::FILE_OPEN, self, SLOT('open()'), [fileTools, fileMenu]),
@save = RAction.new("Save &As...", Icons::FILE_SAVE_AS, self, SLOT('save_as()'), [fileTools, fileMenu]),
RSeperator.new([fileMenu]),
RAction.new("E&xit", Icons::EXIT, $qApp, SLOT('quit()'), [fileMenu])
]
build_actions(actions)
menubar = Qt::MenuBar.new(self)
menubar.insertItem("&File", fileMenu)
@canvas = Qt::Canvas.new(640, 480)
@rects = []
5.times { make_rect }
@canvas_view = MyCanvasView.new(@canvas, self)
self.setCentralWidget(@canvas_view)
@canvas.update
end
end
a = Qt::Application.new(ARGV)
w = MyWidget.new
w.show
a.setMainWidget(w)
a.exec()
exit