require "pp" require "Qt4" # require 'bigdecimal' class MyModel < Qt::SortFilterProxyModel attr_reader :model def initialize(*args) super(*args) @model = Qt::StringListModel.new @model.setStringList((0..10).to_a.collect{|i| "test #{i}"}) setSourceModel(@model) # @dummy = Hash.new [] end def data(index, role=Qt::DisplayRole, uff=0) return Qt::Variant.new unless index.isValid # item = @dummy[index.column] index.column ## if uff > 100 super(index, role) else data(index, role, uff+1) end end end class MyMainWindow < Qt::MainWindow slots "test()" def initialize(*args) super(*args) @wid = Qt::Widget.new @lay = Qt::VBoxLayout.new(@wid) @model = MyModel.new table = Qt::TableView.new table.setModel(@model) table.setSortingEnabled(true) btn = Qt::PushButton.new connect(btn, SIGNAL("clicked()"), self, SLOT("test()")) @lay.addWidget(table) @lay.addWidget(btn) setCentralWidget(@wid) resize(400,900) end def test GC.start end private end $KCODE='u' Qt.debug_level = Qt::DebugLevel::High if ARGV.shift == "debug" app = Qt::Application.new(ARGV) mainWin = MyMainWindow.new mainWin.show app.exec