TreeWidgetItem problem

M

Miquel

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
 
S

Stefano Crocco

Alle gioved=EC 17 maggio 2007, Miquel ha scritto:
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 =3D Qt::TreeWidget.new(self)
self.setCentralWidget(@tree)

@rootItem =3D Qt::TreeWidgetItem.new(@tree)
@rootItem.setText(0, "Root")

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

The problem is in 'item =3D 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 =3D Type )
QTreeWidgetItem ( QTreeWidgetItem * parent, int type =3D 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

It seems that you need to specify also the optional parameter. If you=20
substitute the line
item =3D Qt::TreeWidgetItem.new(@rootItem)
with
item =3D 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
 
M

Miquel

En/na Stefano Crocco ha escrit:
Alle giovedì 17 maggio 2007, Miquel ha scritto:


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
Hey, it is :-D !!!!!! but...Why isn't it necessary in the root node
creation (the constructor have the same optional parameter)?

Thanks


Miquel
 
S

Stefano Crocco

Alle gioved=EC 17 maggio 2007, Miquel ha scritto:
En/na Stefano Crocco ha escrit:

Hey, it is :-D !!!!!! but...Why isn't it necessary in the root node
creation (the constructor have the same optional parameter)?

Thanks


Miquel

Looking at the Korudum forum=20
(http://rubyforge.org/forum/forum.php?forum_id=3D723), it seems there are s=
ome=20
situations in which QtRuby fails to correctly resolve overloaded methods. I=
n=20
this case, the constructor which takes a Qt::ListWidget is resolved=20
correctly, the other isn't. A similar situation occurred me using=20
Qt::MessageBox.question. Although the documentation says the buttons and=20
defaultButton parameters are optional, the method call failed in ruby unles=
s=20
they were both specified. Another example is mentioned on this thread of th=
e=20
Korundum forum: http://rubyforge.org/forum/message.php?msg_id=3D15576

Stefano
 
M

Miquel Oliete

En/na Stefano Crocco ha escrit:
Alle giovedì 17 maggio 2007, Miquel ha scritto:


Looking at the Korudum forum
(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

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 :-D

Thanks for all

Best regards

Miquel
 
R

richard.j.dale

Alle giovedì 17 maggio 2007, Miquel ha scritto:


















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>

* 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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,252
Messages
2,571,267
Members
47,908
Latest member
MagdalenaR

Latest Threads

Top