【发布时间】:2014-10-08 22:09:29
【问题描述】:
我正在使用 QtRuby 和 Qt 4.8.6 并尝试创建一个树视图,其中每个项目在树控件和名称之间都有一个自定义图标。最终结果应该是这样的:
我正在为图标应该去的地方分配空间,但我没有看到任何图标。我该怎么做才能让他们出现?
这是我的代码(稍微简化以删除无数据边缘情况):
class MyModel < Qt::AbstractItemModel
# ...
def data(index, role)
case role
when Qt::DisplayRole
case index.column
when 0; Qt::Variant.new(index.internalPointer.displayName)
when 1; Qt::Variant.new(index.internalPointer.displayType)
end
when Qt::DecorationRole
if index.column==0 then
# Just testing to show a static icon for all items
Qt::Pixmap.new(':/resources/images/Objects-Scene-Normal.png')
end
end
end
end
@mytreeview.model = MyModel.new
如果你想检查 Qt Designer .ui 文件(以防树视图需要有我没有的属性集)它可以是 seen here。
【问题讨论】:
-
如果我将 Pixmap 的路径替换为直接指向图像的路径,我会得到相同的结果。如果我完全删除
Qt::DecorationRole,则图标应该去的空白空间将被删除;这几乎是在做正确的事。 -
如果您使用图像文件的完整路径,如果您使用的是 Windows,请尝试转义反斜杠。
-
@vahancho 感谢您的建议,但请不要从上面的代码中得知我正在使用正斜杠。根据下面的 cmets,正在找到 Pixmap 并且是有效的。我在 OS X 上也遇到了类似的结果。(当我调整 TreeView 的大小时,图标的空白会随机出现和消失。)
标签: ruby qt treeview qtreeview qtruby