Qtruby ListWidgetItem在添加数据后有空白图标

时间:2015-02-05 01:13:18

标签: ruby qt qtruby

我正在使用qtruby处理GUI。我有一个ListWidget,我正在填充ListWidgetItems。到目前为止,这些只包含我想要显示的文本,一切正常。我希望这些项目还包含一些隐藏的数据,以便在单击它们时使用。我使用ListWidgetItem.setData()来设置数据,我可以在点击它时从中获取数据。然而,一旦我添加数据,正在显示的文本现在转移到右边大约4个空格。当我点击它时,文本周围会出现一个小点框,但不会显示添加的空格。它看起来像是一个图标的空间,但我没有设置任何图标,我不想要一个。如何摆脱这个额外的空间,以便包含数据的项目与所有内容对齐?

代码非常简单:

item = Qt::ListWidgetItem.new( @grain_strings[index] )
item.setFont( @font )
# TODO this is causing the text to be indented, removing it removes the indent 
item.setData( 1, Qt::Variant.from_value( grain.type ) )
@item_list.insertItem( @end_of_grains+1, item )

1 个答案:

答案 0 :(得分:3)

setData的第一个参数是角色编号,由于某种原因,您选择将其设置为1. documentation说:“要以数字形式呈现为装饰的数据icon。(QColor,QIcon或QPixmap)“。所以你告诉Qt显示一个图标,但你没有给它一个有效的图标对象。

尝试将角色设置为Qt::UserRole,这是“可用于特定应用目的的第一个角色”。我不确定如何从Ruby访问该常量。如果它不是由qtruby gem提供的,你可以使用0x100。