2012-04-30 3 views
2

Я учусь о Qt Модель/Вид с Ruby, и я пытаюсь запустить следующий кодQt модель/представление Примеры программирования и обучающие программы в Ruby,

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 

Когда я запускаю сценарий, что он показывает, является окно списка с тремя строками пустым. Что я делаю не так? С другой стороны, мне трудно учиться моделировать/просматривать программирование с помощью рубина из-за плохой документации (All is C++), кто-нибудь знает, есть ли учебники или что-то еще?

ответ

1

Вы уже знакомы с Qt, Ruby и/или C++? Если это так сильно поможет в вашем путешествии, так как, к сожалению, для Qt с Ruby нет такой документации.

В любом случае проблема заключается в том, что вы возвращаете массив вместо элемента для требуемого индекса, см. QAbstractItemModel::data. IDX аргумент в есть QModelIndex, поэтому просто посмотреть разыскиваемого строку и вернуть его так:

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

Кроме того, выписка http://techbase.kde.org/Development/Languages/Ruby для получения информации о Руби & Qt в целом.

 Смежные вопросы

  • Нет связанных вопросов^_^