[Kde-bindings] QtRuby: segfault when using Qt::ForegroundRole

Richard Dale richard.dale at telefonica.net
Mon Jul 26 12:14:07 UTC 2010


On Monday, July 26, 2010 09:11:48 am Legolgo wrote:
> Hi everyone,
> 
> I started using qtruby a few days ago and so far it's been great.
> But I stumbled upon a bug that causes a segfault.
> 
> As I just started using Qt and the qtruby binding I don't know if I'm
> doing something wrong with my custom model or if it's a bug of the binding.
> 
> Here is some minimal code that reproduce the error:
> 
> require "Qt4"
> 
> class TaskListModel < Qt::StandardItemModel
> 
>      def initialize(parent = nil)
>          super(parent)
>      end
> 
>      def data(index, role)
>          if !index.valid?
>              return Qt::Variant.new
>          end
>          if role == Qt::DisplayRole
>              item = item(index.row)
>              return Qt::Variant.new(item.text)
>          end
>          #this role cause a segfault, sometimes you have to wait a
> little bit or try to edit rows
>          if role == Qt::ForegroundRole
>              return Qt::Brush.new()
>          end
> 
>          return Qt::Variant.new
> 
>      end
> 
> 
> end
> 
> app = Qt::Application.new(ARGV)
> @widget = Qt::ListView.new()
> 
> @model = TaskListModel.new
> @widget.setModel(@model)
> #fill model with some data
> ["toto", "tata", "tutu"].each do |desc|
>      item = Qt::StandardItem.new
>      item.text = desc
>      @model.appendRow(item)
> end
> 
> @widget.show()
> app.exec()
> 
> I'm using the libQt4-ruby from ubuntu 10.04 with ruby 1.8
This 'return Qt::Brush.new()' looks wrong to me - I think you need to return a 
Qt::Brush inside a Qt::Variant with Qt::Variant.fromValue(Qt::Brush.new()).

-- Richard



More information about the Kde-bindings mailing list