Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Wie kann ich mit QT/C++ einen Vector immer bekannt machen?

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.06.2004
    Ort
    Berlin
    Beiträge
    55

    Wie kann ich mit QT/C++ einen Vector immer bekannt machen?

    Geht das nur, wenn ich den Vector Global deklariere? ( im *.ui.h file )
    Oder kann das irgendwelche probleme geben?


    Hab das mal getestet:
    Code:
    #include <qstring.h>
    #include <vector>
    using std::vector;
    
    
    vector<QString> a(1);
    void Form1::init()
    {   
        a[0] = "hallo";   
    }
    
    void Form1::pushButton1_clicked()
    {
        lineEdit -> setText(  a[0] );
    }
    Funktionieren tut es so. Aber geht bestimmt noch anders

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ich würde sagen, du vermeidest wenn möglich globale Variablen ganz.

    Besser zu erzeugst den Vektor an einer zentralen Stelle (main() oder Hauptfenster) und übergibst dann eine Referenz darauf an alle Klassen, die darauf zugreifen sollen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    11.06.2004
    Ort
    Berlin
    Beiträge
    55
    Danke für die schnelle Hilfe, werd ich gleich mal ausprobieren.

  4. #4
    Registrierter Benutzer
    Registriert seit
    11.06.2004
    Ort
    Berlin
    Beiträge
    55
    hab mal rumprobiert, krieg das aber nicht hin (ein kleines Beispiel würde mir sehr helfen).
    Ich glaube so wie ich es hier habe, ist es komplett falsch.

    main.cpp
    Code:
    #include <qapplication.h>
    #include "form1.h"
    #include "test.h"
    #include <vector>
    using std::vector;
    
    int main( int argc, char ** argv )
    {
        QApplication a( argc, argv );
        Form1 w;
        const QString d = "test";
        vector<QString> b( 1 );
        Test* c = new Test();
        b[0]= d;
        c->bla = b;
        w.show();
        a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
        return a.exec();
    form1.ui.h:
    Code:
    #include "test.h"
    
    void Form1::pushButton1_clicked()
    {
        Test* bb = new Test();
    
        lineEdit -> setText(  bb->bla[0] );
    
    }
    test.h:
    Code:
    #include <qstring.h>
    #include <vector>
    using std::vector;
    
    class Test
    {
        
    	    
    public:
        vector<QString> bla;
        Test(){bla.resize(1);}
        ~Test();
        
    };
    Vielen dank im vorraus.
    Geändert von fraggo01 (26-08-2004 um 08:55 Uhr)

  5. #5
    Registrierter Benutzer
    Registriert seit
    11.06.2004
    Ort
    Berlin
    Beiträge
    55
    Hab den vector jetzt in der Klasse Form1 (form1.h) deklariert.
    Habe es im Objekt Explorer vom QT-Designer eingestellt und funtioniert.

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von fraggo01
    hab mal rumprobiert, krieg das aber nicht hin (ein kleines Beispiel würde mir sehr helfen).
    Ich glaube so wie ich es hier habe, ist es komplett falsch.
    Ich sagte ja auch übergeben, also zB

    Code:
    int main()
    {
        vector<QString> b(1);
    
        Test t(b);
    }
    Code:
    class Test
    {
    public:
        Test(vector<QString>& bb);
    };
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer
    Registriert seit
    11.06.2004
    Ort
    Berlin
    Beiträge
    55
    Vielen dank, funzt jetzt auch so.
    Werde es aber im header file vom Hauptfenster lassen, dort kann ich den vector ja sogar als private deklarieren und jederzeit darauf zugreifen (im *ui.h file).

  8. #8
    Registrierter Benutzer
    Registriert seit
    06.02.2001
    Ort
    68xxx Mannheim
    Beiträge
    73
    Moin!

    Ich wolte mal fragen ob du dein Lösung Online Stellen kannst?

    mfg jancarsten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •