000
27.08.2012, 13:55 Uhr
~Melanie_27
Gast
|
Ich bin gerade dabei eine QLinkedList<groups> zu erstellen, die wie der Name schon sagt aus Objekten der Klasse groups besteht. Jedes Objekt vom Typ groups besitzt eine weitere QLinkedList<devices>, die aus Objekten der Klasse devices besteht. Eine verkettete Liste in einer verketteten Liste also. Über main() erstelle ich 3 Elemente vom Typ groups und füge diese in die Liste QLinkedList<groups> ein. Alle drei Elemente erhalten 3 devices. Mein Problem ist das Auslesen der einzelnen Gruppen. Ich möchte die devices einer jeden Gruppe auslesen. Hier main():
C++: |
#include <QtGui/QApplication> #include <QtCore/QCoreApplication> #include "mainwindow.h" #include "groups.h" #include <QLinkedList> #include <iostream> #include <QDebug>
using namespace std; int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); QLinkedList<groups> myList; QLinkedList<groups>::iterator iter;
QString Group1("Group1"); QString Group2("Group2"); QString Group3("Group3");
myList.append(Group1); myList.append(Group2); myList.append(Group3);
QString Device1("Device1"); QString Device2("Device2"); QString Device3("Device3");
iter=myList.begin(); //In erste Gruppe schreiben iter->adddevice(Device1); iter->adddevice(Device2); iter->adddevice(Device3); iter++; //In zweite Gruppe schreiben iter->adddevice(Device1); iter->adddevice(Device2); iter->adddevice(Device3); iter++; //In dritte Gruppe scheiben iter->adddevice(Device1); iter->adddevice(Device2); iter->adddevice(Device3);
for(iter = myList.begin(); iter!= myList.end(); ++iter) { w.addParent(iter->getname()); //Alle Gruppennamen auslesen und als Parent eintragen. for (iter->getdeviceiter() = iter->getdevice().begin(); iter->getdeviceiter()!=iter->getdevice().end(); ++iter->getdeviceiter()) //Hier muss der Wurm drin sein. { w.addChild(iter->getdeviceiter()->getname2()); //Alle Devicenamen auslesen und als Child in richtige Gruppe eintragen. } }
return a.exec(); }
|
hier die groups.cpp
C++: |
#include "groups.h"
groups::groups() {} groups::groups(const QString& pname) { name=pname; } QString groups::getname() { return name; } QLinkedList<devices>::iterator groups::getdeviceiter() { return devIt; }
void groups::adddevice(const QString& dname) { device.append(dname); } QLinkedList<devices> groups::getdevice() { return device; }
groups::~groups() {
}
|
Hier die groups.h
C++: |
#ifndef GROUPS_H #define GROUPS_H #include <QString> #include "devices.h" #include <QLinkedList> class groups { public: groups(); groups(const QString& pname); QString getname(); void adddevice(const QString& dname); QLinkedList<devices> getdevice(); QLinkedList<devices>::iterator getdeviceiter(); ~groups();
private: QString name; QLinkedList<devices> device; QLinkedList<devices>::iterator devIt;
};
#endif // GROUPS_H
|
hier die device.cpp
C++: |
#include "devices.h" devices::devices() {} devices::devices(const QString& name) { dname = name; } QString devices::getname2() { return dname; } devices::~devices() {}
|
und folglich die device.h
C++: |
#ifndef DEVICES_H #define DEVICES_H #include <QString>
class devices { public: devices(); devices(const QString& name); ~devices(); QString getname2();
private: QString dname; };
#endif // DEVICES_H
|
Die einzelnen Gruppen und Devices möchte ich in ein QTreeWidget schreiben. Die Gruppen sind hierbei die übergeordnete Struktur und mit jedem Klick auf die Gruppe sollen die einzelnen Devices sichtbar werden.
Mein Problem ist folgendes. Das Fenster mit dem TreeWidget öffnet sich, jedoch erscheint die Fehlermeldung "Der Prozess wurde nach Erhalt eines Signals vom Betriebssystem angehalten. Name des Signals: SIGSEGV Bedeutung: Segmentation fault. Wie lese ich richtig die Liste device in der Klasse group aus und das alles von main aus? Hoffe mir kann jemand helfen. Viele liebe Grüße. Melli |