我正在使用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 )发布于 2015-02-05 01:21:09
setData的第一个参数是角色号,出于某种原因,您选择将其设置为1。文档表示:“要以图标形式呈现的数据(QColor、QIcon或QPixmap)”。因此,您告诉Qt显示一个图标,但您没有给它一个有效的图标对象。
尝试将角色设置为Qt::UserRole,这是“可用于特定应用程序的第一个角色”。我不知道如何从Ruby中访问这个常量。如果qtruby没有提供它,我想您可以使用0x100。
https://stackoverflow.com/questions/28334594
复制相似问题