# TreeWidgetItem problem

**URL:** <https://www.ruby-forum.com/t/treewidgetitem-problem/104378>\
**Category:** Ruby\
**Created:** [May 17, 2007, 11:51am UTC](https://www.ruby-forum.com/t/treewidgetitem-problem/104378 "2007-05-17T11:51:18Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![miquel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e495f1/32.png) [@miquel](https://www.ruby-forum.com/u/miquel)\
**Post date:** [May 17, 2007, 11:51am UTC](https://www.ruby-forum.com/t/treewidgetitem-problem/104378/1 "2007-05-17T11:51:18Z")

</div>

Hi there

I’m trying to code a Tree using ruby qt bindings (Qt v4.2.0 using  
aboutQt() info).

This is my code.

@tree = Qt::TreeWidget.new(self)  
self.setCentralWidget(@tree)

@rootItem = Qt::TreeWidgetItem.new(@tree)  
@rootItem.setText(0, “Root”)

0.upto(10) do |index|  
item = Qt::TreeWidgetItem.new(@rootItem)  
item.setText(0, “Node#{index}”)  
end

The problem is in ‘item = Qt::TreeWidgetItem.new(@rootItem)’, system  
tells me:

unresolved constructor call Qt::TreeWidgetItem (ArgumentError)

and reading Qt documentation there are two constructors allowed:

QTreeWidgetItem ( QTreeWidget \* parent, int type = Type )  
QTreeWidgetItem ( QTreeWidgetItem \* parent, int type = Type )

The first one is used in the @rootNode object creation and the second  
one is the one which produces this message.

Can anybody help me?

Thanks in advance

Best regards

Miquel

---

<div class="post-metadata">

**Author:** ![miquel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e495f1/32.png) [@miquel](https://www.ruby-forum.com/u/miquel)\
**Post date:** [May 17, 2007, 12:02pm UTC](https://www.ruby-forum.com/t/treewidgetitem-problem/104378/2 "2007-05-17T12:02:20Z")

</div>

Alle giovedì 17 maggio 2007, Miquel ha scritto:

> @rootItem = Qt::TreeWidgetItem.new(@tree)  
> unresolved constructor call Qt::TreeWidgetItem (ArgumentError)
> 
> Thanks in advance
> 
> Best regards
> 
> Miquel

It seems that you need to specify also the optional parameter. If you  
substitute the line  
item = Qt::TreeWidgetItem.new(@rootItem)  
with  
item = Qt::TreeWidgetItem.new(@rootItem, Qt::TreeWidgetItem::Type)  
it should work (at least, it does on my system, with qt 4.2.3).

I hope this helps

Stefano

---

<div class="post-metadata">

**Author:** ![miquel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e495f1/32.png) [@miquel](https://www.ruby-forum.com/u/miquel)\
**Post date:** [May 17, 2007, 12:14pm UTC](https://www.ruby-forum.com/t/treewidgetitem-problem/104378/3 "2007-05-17T12:14:24Z")

</div>

En/na Stefano C. ha escrit:

> > self.setCentralWidget(@tree)  
> > tells me:
> 
> It seems that you need to specify also the optional parameter. If you

Hey, it is 😃 !!! but…Why isn’t it necessary in the root node  
creation (the constructor have the same optional parameter)?

Thanks

```
Miquel
```

---

<div class="post-metadata">

**Author:** ![miquel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e495f1/32.png) [@miquel](https://www.ruby-forum.com/u/miquel)\
**Post date:** [May 17, 2007, 1:01pm UTC](https://www.ruby-forum.com/t/treewidgetitem-problem/104378/4 "2007-05-17T13:01:04Z")

</div>

Alle giovedì 17 maggio 2007, Miquel ha scritto:

> > > self.setCentralWidget(@tree)  
> > > tells me:
> > 
> > substitute the line  
> > creation (the constructor have the same optional parameter)?
> 
> Thanks
> 
> ```
> Miquel
> 
> ```

Looking at the Korudum forum  
([http://rubyforge.org/forum/forum.php?forum\_id=723](http://rubyforge.org/forum/forum.php?forum_id=723)), it seems there are  
some  
situations in which QtRuby fails to correctly resolve overloaded  
methods. In  
this case, the constructor which takes a Qt::ListWidget is resolved  
correctly, the other isn’t. A similar situation occurred me using  
Qt::MessageBox.question. Although the documentation says the buttons and  
defaultButton parameters are optional, the method call failed in ruby  
unless  
they were both specified. Another example is mentioned on this thread of  
the  
Korundum forum: [http://rubyforge.org/forum/message.php?msg\_id=15576](http://rubyforge.org/forum/message.php?msg_id=15576)

Stefano

---

<div class="post-metadata">

**Author:** ![miquel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e495f1/32.png) [@miquel](https://www.ruby-forum.com/u/miquel)\
**Post date:** [May 17, 2007, 5:56pm UTC](https://www.ruby-forum.com/t/treewidgetitem-problem/104378/5 "2007-05-17T17:56:02Z")

</div>

On May 17, 11:01 am, Stefano C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > The first one is used in the @rootNode object creation and the second  
> > It seems that you need to specify also the optional parameter. If you  
> > substitute the line  
> > item = Qt::TreeWidgetItem.new(@rootItem)  
> > with  
> > item = Qt::TreeWidgetItem.new(@rootItem, Qt::TreeWidgetItem::Type)  
> > it should work (at least, it does on my system, with qt 4.2.3).  
> > I’ve found out what the problem is, and it’s already fixed in the kde  
> > svn version of QtRuby. Here is the entry from the ChangeLog:

2006-12-16 Richard Dale [rdale@xxxx](mailto:rdale@xxxx)

- There is no way to distinguish between the two constructors:  
QTreeWidgetItem (const QTreeWidgetItem & other)  
QTreeWidgetItem (QTreeWidgetItem \* parent, const QStringList &  
strings, int type = Type)  
when the latter has a single argument. So force the second variant  
to  
be called

– Richard

---

<div class="post-metadata">

**Author:** ![miquel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e495f1/32.png) [@miquel](https://www.ruby-forum.com/u/miquel)\
**Post date:** [May 17, 2007, 1:08pm UTC](https://www.ruby-forum.com/t/treewidgetitem-problem/104378/6 "2007-05-17T13:08:05Z")

</div>

En/na Stefano C. ha escrit:

> > > > ```
> > > > item.setText(0, "Node#{index}")
> > > > 
> > > > ```
> > > > 
> > > > QTreeWidgetItem ( QTreeWidgetItem \* parent, int type = Type )
> 
> Stefano

Ok, I have reported this issue to the KDE bindings list and Richard Dale  
is asking me some questions. If you are interested in final conclusions  
I’ll post here 😃

Thanks for all

Best regards

```
Miquel
```
