我正在学习使用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
当我运行脚本时,它显示的是一个列为三行为空的列表窗口。我究竟做错了什么? 另一方面,我发现很难学习使用ruby来编程/查看编程,因为文档很差(All is C ++),如果有教程或其他东西,任何人都知道吗?
答案 0 :(得分:1)
您是否熟悉Qt,Ruby和/或C ++?如果这样那将对你的旅程有很大的帮助,因为不幸的是,有很多关于Qt和Ruby的文档可用。
无论如何,问题是你要返回一个数组而不是想要索引的元素,请参阅QAbstractItemModel::data。那里的idx参数是一个QModelIndex,所以只需查找想要的行并返回如下:
Qt::Variant.new @data[idx.row]
另外,结帐http://techbase.kde.org/Development/Languages/Ruby了解有关Ruby&amp;的信息。 Qt一般。