anfängerfrage
-
hi eine frage zu wertübergabe
ich habe mir eine klasse gebaut in der ich alle eingabewerte eines benutzers sammeln will....bis jetzt wird dort lediglich ein QString zwischen gespeichert
#include "data.hpp" using namespace std; void Data::setPlPfad_slot(const QString &pfad) { plPfad = pfad; cout << plPfad << endl; } QString* Data::getPlPfad(){ return &plPfad; }dazu die header datei
#ifndef DATA_HPP_ #define DATA_HPP_ #include <qobject.h> #include <string> #include <iostream> #include <qstring.h> using namespace std; class Data : public QObject{ Q_OBJECT public: Data(){}; ~Data(){}; QString* getPlPfad(); void coutpfad(); public slots: void setPlPfad_slot(const QString&); private: QString plPfad; }; #endif /*DATA_HPP_*/in plPfad steht nach einer eingabe in ein textfeld auch was drin....hab ich getestet mit cout << plPfad << endl;
nun soll dieser pfad anderen classen zur verfügung stehen
dafür soll getPlPfad() zuständig sein#include "playlist.hpp" using namespace std; void Playlist::reader_slot(){ QString *pfad = data.getPlPfad(); cout << *pfad << endl; }ifndef PLAYLIST_HPP_ #define PLAYLIST_HPP_ #include <iostream> #include <fstream> #include <string> #include <qstring.h> #include <qobject.h> #include "data.hpp" using namespace std; class Playlist : public QObject{ Q_OBJECT public: Playlist(){}; ~Playlist(){}; public slots: void reader_slot(); private: Data data; }; #endif /*PLAYLIST_HPP_*/leider ist der pointer *pfad leer bzw. es wird kein pfad ausgegeben
was habe ich da falsch gemacht?
thx für die antworten
-
Man sieht keinen Code in dem Du 'setPlPfad_slot' aufrufst; bzw. welche Variable dort als Parameter übergeben wird.
Gruß
Werner
-
hi problem gelöst
ich hatte in playlist ne instanz von data aufgemacht ...diese enthält natürlich den wert der variable plpfad nicht ..wird ja ne neue angelegt ...ergo kein wert vorhanden
ich übergebe beim aufruf von playlist in
#include <qapplication.h> #include <qpushbutton.h> #include <qlayout.h> #include <qlineedit.h> #include <qslider.h> #include <qlcdnumber.h> #include "playlist.hpp" #include "player.hpp" #include "data.hpp" using namespace std; int main(int argc, char *argv[]) { QApplication app(argc,argv); QWidget *mw = new QWidget(); QPushButton *q = new QPushButton("Quit", mw); QPushButton *p = new QPushButton("Play", mw); QPushButton *s = new QPushButton("Stop", mw); QLineEdit *le= new QLineEdit("",mw); QLCDNumber *volValue = new QLCDNumber(mw); QLCDNumber *posValue = new QLCDNumber(mw); QSlider *slidevol = new QSlider(mw); QSlider *slidepos = new QSlider(mw); slidevol->setOrientation(Qt::Horizontal); slidevol->setCaption("Volume"); slidepos->setOrientation(Qt::Horizontal); slidepos->setCaption("Position"); volValue->setNumDigits(3); posValue->setNumDigits(30); Player *pl = new Player(slidevol,slidepos,volValue); Data *data = new Data(); Playlist *playlist = new Playlist(data); QObject::connect(q,SIGNAL(clicked()),pl,SLOT(stop_slot())); QObject::connect(q,SIGNAL(clicked()),&app,SLOT(quit())); //QObject::connect(p,SIGNAL(clicked()),pl,SLOT(play_slot())); QObject::connect(p,SIGNAL(clicked()),playlist,SLOT(reader_slot())); QObject::connect(le,SIGNAL(textChanged(const QString&)),data,SLOT(setPlPfad_slot(const QString&))); QObject::connect(s,SIGNAL(clicked()),pl,SLOT(stop_slot())); QObject::connect(slidevol,SIGNAL(valueChanged(int)),pl,SLOT(setVolume_slot(int))); QObject::connect(slidepos,SIGNAL(valueChanged(int)),pl,SLOT(setPos_slot(int))); QObject::connect(slidepos,SIGNAL(valueChanged(int)),posValue,SLOT(display(int))); QVBoxLayout *tl = new QVBoxLayout(mw); QHBoxLayout *bl = new QHBoxLayout(); bl->addWidget(q); bl->addWidget(p); bl->addWidget(s); bl->addWidget(le); bl->addWidget(slidevol); bl->addWidget(volValue); bl->addWidget(slidepos); bl->addWidget(posValue); tl->addLayout(bl); mw->setCaption("PlayerGui"); mw->show(); int result = app.exec(); delete q; delete p; delete s; delete le; delete slidevol; delete slidepos; delete tl; delete bl; delete pl; delete playlist; delete data; delete volValue; delete posValue; return result; }der klasse playlist einen zeiger auf die instanz von data...ergo es wird mit ein und der selben variable gearbeitet
könnte man plPfad auch static machen? ...dann könnte man doch beliebig viele instanzen aufmachen und die werte sind immer gleich oder?
grüße