<inb4 - newbie> Mam dwie klasy dziedziczace po QObject. Pierwsza Contact, druga ContactList. Funkcja dołączająca Contact-y do ContactList ma formę:
void ContactList::add(QStringList data){
new Contact(data, this);
}
Wewnątrz Klasy ContactList staram się dotrzeć do obiektów składowych, np:
auto childList = this->children();
for(auto wej : childList)
{
qDebug() << wej->objectName() << endl; // działa
}
Wszystko idzie ok, ContactList ma dostęp do wszystkich funkcji składowych, jednak obiekty z childList dysponują tylko funkcjami z QObject (a chciałbym dobrać się do funkcji składowych klasy Contact). Jakie zmiany muszę wprowadzić, aby dostać się do tych funkcji?
Całość kodu poniżej
#include <QObject>
#include <QList>
#include <QDebug>
class Contact : public QObject
{
public:
friend bool operator==(Contact L, Contact R);
explicit Contact(QStringList wej, QObject* parent = 0)
:m_Category( wej[0].toInt()) ,
m_FirstName( wej[1]),
m_LastName( wej[2]),
m_StreetAdress( wej[3]),
m_ZipCode( wej[4]),
m_City( wej[5]),
m_PhoneNumber( wej[6]),
m_EMail( wej[7]),
QObject(parent) { this->setObjectName(m_FirstName + " " + m_LastName); }
virtual ~Contact(){}
QString toQString();
private:
int m_Category;
QString m_FirstName;
QString m_LastName;
QString m_StreetAdress;
QString m_ZipCode;
QString m_City;
QString m_PhoneNumber;
QString m_EMail;
};
QString Contact::toQString(){
QString sep = "[::]";
QString cat = QString::number(m_Category);
return cat + sep +
m_FirstName + sep +
m_LastName + sep +
m_StreetAdress + sep +
m_ZipCode + sep +
m_City + sep +
m_PhoneNumber + sep +
m_EMail;
}
bool operator==(Contact L, Contact R){
if(L.m_FirstName == R.m_FirstName && L.m_LastName == R.m_LastName && L.m_PhoneNumber == R.m_PhoneNumber)
return 1;
else return 0;
}
class ContactList : public QObject
{
public:
void add(QStringList data);
void remove(Contact c);
QStringList getPhoneList(int category);
QStringList getMailingList(int category);
ContactList(QString ListName = "Lista Kontaktow") {this->setObjectName(ListName);}
private:
void getData(QStringList& Out, QString sep, int category, int additionalData);
};
void ContactList::add(QStringList data){
new Contact(data, this);
}
QStringList ContactList::getPhoneList(int category){
QStringList Out;
QString sep = " ";
auto childList = this->children();
for(auto wej : childList)
{
qDebug() << wej->objectName() << endl;
}
return Out;
}