2

RubyでQtモデル/ビューについて学び、次のコードを実行しようとしています

require 'Qt4'


class MyModel < Qt::AbstractListModel

    def initialize(data = [])
        super()
        @data = data
    end

    def rowCount idx
        @data.size
    end

    def data idx, role = Qt::DisplayRole
        if role == Qt::DisplayRole then
            Qt::Variant.new @data
        else Qt::Variant.new
        end
    end
end

if $0 == __FILE__
    app = Qt::Application.new ARGV 
    v = Qt::ListView.new
    m = MyModel.new(['1', '2', '3'])
    v.model = m
    v.show
    app.exec
end

スクリプトを実行すると、3行が空のリストウィンドウが表示されます。私は何が間違っているのですか?一方、ドキュメントが貧弱なため(すべてC ++)、rubyを使用してプログラミングをモデル化/表示する方法を学ぶのは難しいと思います。チュートリアルなどがあるかどうかは誰にもわかりません。

4

1 に答える 1

1

Qt、Ruby、C ++、あるいはその両方にすでに精通していますか?もしそうなら、残念ながら、Rubyを使用したQtのドキュメントはそれほど多くないので、それはあなたの旅に大いに役立ちます。

とにかく、問題は、必要なインデックスの要素ではなく配列を返すことです。QAbstractItemModel::dataを参照してください。そこにあるidx引数にはQModelIndexがあるので、必要な行を検索して次のように返します。

Qt::Variant.new @data[idx.row]

また、RubyとQt全般に関する情報については、http://techbase.kde.org/Development/Languages/Rubyをチェックアウトしてください。

于 2012-05-02T06:54:53.083 に答える