Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie kann ich mit QT/C++ einen Vector immer bekannt machen?



fraggo01
25-08-2004, 22:06
Geht das nur, wenn ich den Vector Global deklariere? ( im *.ui.h file )
Oder kann das irgendwelche probleme geben?


Hab das mal getestet:


#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

anda_skoa
25-08-2004, 23:18
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,
_

fraggo01
25-08-2004, 23:31
Danke für die schnelle Hilfe, werd ich gleich mal ausprobieren. :)

fraggo01
26-08-2004, 08:50
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. :confused:

main.cpp


#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:


#include "test.h"

void Form1::pushButton1_clicked()
{
Test* bb = new Test();

lineEdit -> setText( bb->bla[0] );

}

test.h:


#include <qstring.h>
#include <vector>
using std::vector;

class Test
{


public:
vector<QString> bla;
Test(){bla.resize(1);}
~Test();

};

Vielen dank im vorraus.

fraggo01
26-08-2004, 10:06
Hab den vector jetzt in der Klasse Form1 (form1.h) deklariert.
Habe es im Objekt Explorer vom QT-Designer eingestellt und funtioniert.

anda_skoa
26-08-2004, 16:23
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. :confused:


Ich sagte ja auch übergeben, also zB



int main()
{
vector<QString> b(1);

Test t(b);
}




class Test
{
public:
Test(vector<QString>& bb);
};


Ciao,
_

fraggo01
26-08-2004, 18: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).

jancarsten
15-10-2004, 09:05
Moin!

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

mfg jancarsten