2

我正在使用 qtruby 开发 GUI。我有一个用 ListWidgetItems 填充的 ListWidget。到目前为止,这些仅包含我想要显示的文本,并且一切正常。我希望这些项目还包含一些隐藏数据,以便在单击它们时使用。我使用 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 )
4

1 回答 1

3

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

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

于 2015-02-05T01:21:09.447 回答