Nur Zeiger übergeben - aber wie?



  • Nabend,

    ich habe eine GUI, die ein QLineEdit-Element enthält. Nun möchte ich dieses Element in einer anderen Klasse auslesen, ändern und dort wieder reinschreiben.

    Das Übergeben eines QLineEdit-Elements ist glaube ich nicht angebracht, da ich ja mit Hilfe der Zeiger nur eine Referenz übergeben muss und somit sparsamer arbeite.

    Aber wie genau mache ich das?

    Hier ein kleiner Auszug, wie ich es versuchen:

    Klasse1.cpp:
    void Window::on_button2_clicked()
    {
        _newWindow = new newWindow(&pw);
        _newWindow->show();
    }
    
    Klasse2.h:
    private:
        QString *_pw;
    
    Klasse2.cpp:
    Klasse2::Klasse2(QString *_pw)
    {
        this->_pw = _pw;
        setupUi(this);
    }
    

    Sorry für den Käse. Bin ziemlich müde... schreibe vom QLineEdit und bringe ein Beispiel mit QString. Naja, aber vom Prinzip bleibt's gleich. Ist das mit dem Übergeben von Elementen so richtig?



  • Ich verstehe nicht ganz, was du genau willst.

    So etwas übergen kann man machen ja. Du hast in Klasse2 einen Zeiger auf einen String, der sonst irgendwo ist. Das ist gut so.

    Stell deine Frage sonst nochmal, wenn ich sie nicht bereits beantwortet habe..



  • Also ist doch ganz einfach:

    Klasse2::Klass2( QLineEdit* line )
    {
    QString test = line->text(); // Text auslesen
    line->setText( "bla" ); // Text ändern
    }
    

    Meintest du das oder wie?

    Hoffe konnte dir helfen.

    Gruß freeG



  • Ja genau sowas meine ich! Sodass ich halt nur den Zeiger übergeben muss. Danke!

    Meine Übergabe war richtig?

    Klasse2 *_klasse2 = new Klasse2(&line);
    


  • Also wenn in deiner main line ein zeiger ist, dann kannst ihn einfach so übergeben.

    main

    // nur kleiner Teil von der main
    QLineEdit* line = new QLineEdit();
    Klasse2 * myObjekt = new Klasse2( line );
    

    Hast du es verstanden 😉 ?

    Hoff das war hilfreich.

    Gruß freeG



  • Ja, hab's verstanden. Danke!



  • Kein Problem 🙂


Log in to reply