Zeiger auf Objekt eines Objektes übergeben(Weiß leider keine genaue Formulierung)

Niv k

Mitglied
Einen wunderschönen guten Abend alle zusammen!

Ich habe jetzt angefangen mich in Qt einzuarbeiten. Funktioniert auch alles super, QT ist auch nicht das Problem. Denke ich.
Was mich grade irritiert ist folgendes:

Ich habe eine Klasse erstellt XMLHandler, diese soll eine Tabelle mit den Werten einer XML Datei füllen.
Dieser Klasse möchte ich gerne im Konstruktor den Zeiger auf die Tabelle übergeben, welche er füllen soll.
Da ich in Qt mit dem Designer arbeitet, befinden sich diese Ojekte danach im "ui" Objekt.

Codeausschnitt:

Code:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),ui(new Ui::MainWindow) {

  XMLHandler XMLTable(ui->TABLE_MainTable);
  XMLTable.openXMLFile(true);

  ui->setupUi(this);

}

Ich möchte also den Teiger auf das Tabellenobjekt übergeben welcher im ui Objekt gespeicher ist.
Funktioniert nur leider nicht, soblad ich in meiner XMLHandler klasse den Zeiger verweden will.
Fehlermeldung: Segmentation fault. Kann ich zwar in etwa nachvollziehen, das dieser Fehler passiert, andererseits weiß ich jetzt auch keine Lösung wie nun den Zeiger auf diese Tabelle an meinen XML Handler übergeben kann?

Jemand eine Antwort?

Viele Dank!

PS: Die Suchfunktion und Google konntne mir leider nicht weiterhelfen, da ich mein Problem nicht verständlich auszudrücken wusste! Sorry!
 
Hey,
ich würde folgendes mal probieren:
Gruß

Code:
MyNameSpace::MainWindow *win = NULL; // global

int main(int argc, char **argv)
{
    QApplication app(argc,argv);
    QMainWindow *main__win = new QMainWindow;
    win = new MyNameSpace::MainWindow();
    win->setupUi(main__win);
    main__win->show();

    return app.exec();
}

// dann im Code:  win->widget_1 oder in deinen Fall das jeweilige Objekt

#ifndef __UI_HEADER_H__
#define __UI_HEADER_H__

#include <QObject>
...

QT_BEGIN_NAMESPACE
class Ui_MainWindow: public QObject
{
    Q_OBJECT
public:
    QWidget *widget_1;
...
    void setupUi(QMainWindow *MainWindow)
    {
        ...
        retranslateUi(MainWindow);
    }

    void retranslateUi(QMainWindow *MainWindow)
    {
        ...
    }
};

namespace MyNameSpace {
    class MainWindow: public Ui_MainWindow {};
};

QT_END_NAMESPACE

#endif
 
Hallo jkallup,

danke für deine Antwort!

Witzigerweise habe ich gerade per Zufall rausgefunden, woran es lag.
Ich hatte während ich auf die Antwort hier gewartet habe, erstmal weiter gemacht. Plötzlich funktionierte es auch in der Originalfunktion nicht mehr?

Ich nur gedacht: "Hmm? Was ist denn anders?!"

Mir ist aufgefallen:

Code:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),ui(new Ui::MainWindow) {
 
  ui->setupUi(this);  

  XMLTable(ui->TABLE_MainTable);
  XMLTable.openXMLFile(true);
 
  
 
}

das "ui->setupUi(this);" muss irgendwie vor allem kommen, bevor man irgendetwas davon benutzt!
Weiß vll. jemand wieso?...

Ansonstne.. funktioniert jetzt endlich genau so, wie geplant!

Danke trotzdem! :)
 

Neue Beiträge

Zurück