Do someone know a solution to do get properties of a QPushButton placed in a QList<QWidget *> ?
.h
QList<QWidget *> list;
.cpp
QPushButton *button = new QPushButton("Push", this);
list->append(button);
qDebug() << list.at(0)->text(); // Not working : text() is not a property of QWidget but a property of QPushButton
Thx
CodePudding user response:
The problem is more to do with c
and polymorphism in general rather than anything specific to Qt
. The expression...
list.at(0)
returns a QWidget *
. Hence the call...
list.at(0)->text()
fails to compile as QWidget
has no member function named text
. If you think the pointer returned by list.at(0)
points to a specific subclass of QWidget
then you need to downcast it and check the result before using it. e.g.
if (auto *b = dynamic_cast<QPushButton *>(list.at(0)))
qDebug() << b->text();
Alternatively -- since you are using Qt
-- you can make use of qobject_cast
in a similar fashion...
if (auto *b = qobject_cast<QPushButton *>(list.at(0)))
qDebug() << b->text();