Qt Ruby QListWidget Item 添加数据后图标空白
Qtruby ListWidgetItem has blank icon after adding data
我正在使用 qtruby 开发 GUI。我有一个用 ListWidgetItems 填充的 ListWidget。到目前为止,这些只包含了我想要显示的文本,并且一切正常。我希望这些项目还包含一些隐藏数据,以便在单击它们时使用。我使用 ListWidgetItem.setData() 来设置数据,当它被点击时我可以从中获取数据。但是,一旦我添加了数据,显示的文本现在就向右移动了大约 4 spaces。当我单击它时,文本周围会出现一个小虚线框,但不会出现添加的 space。它看起来像是一个 space 图标,但我没有设置任何图标,我也不想要一个。我如何摆脱这个额外的 space 以便包含数据的项目与所有内容对齐?
代码非常简单:
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 )
setData
的第一个参数是角色编号,出于某种原因您选择将其设置为 1。documentation 表示:"The data to be rendered as a decoration in the form of an icon. (QColor, QIcon or QPixmap)"。所以你告诉 Qt 显示一个图标,但你没有给它一个有效的图标对象。
尝试将角色设置为 Qt::UserRole
,即 "The first role that can be used for application-specific purposes." 我不确定如何从 Ruby 访问该常量。如果它不是由 qtruby gem 提供的,我想你可以使用 0x100。
我正在使用 qtruby 开发 GUI。我有一个用 ListWidgetItems 填充的 ListWidget。到目前为止,这些只包含了我想要显示的文本,并且一切正常。我希望这些项目还包含一些隐藏数据,以便在单击它们时使用。我使用 ListWidgetItem.setData() 来设置数据,当它被点击时我可以从中获取数据。但是,一旦我添加了数据,显示的文本现在就向右移动了大约 4 spaces。当我单击它时,文本周围会出现一个小虚线框,但不会出现添加的 space。它看起来像是一个 space 图标,但我没有设置任何图标,我也不想要一个。我如何摆脱这个额外的 space 以便包含数据的项目与所有内容对齐?
代码非常简单:
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 )
setData
的第一个参数是角色编号,出于某种原因您选择将其设置为 1。documentation 表示:"The data to be rendered as a decoration in the form of an icon. (QColor, QIcon or QPixmap)"。所以你告诉 Qt 显示一个图标,但你没有给它一个有效的图标对象。
尝试将角色设置为 Qt::UserRole
,即 "The first role that can be used for application-specific purposes." 我不确定如何从 Ruby 访问该常量。如果它不是由 qtruby gem 提供的,我想你可以使用 0x100。