problem mit privater variable....

Alles rund um die Programmierung mit Qt
Antworten
slash-ex
Beiträge: 239
Registriert: 30. März 2005 21:40

problem mit privater variable....

Beitrag von slash-ex »

mein problem ist folgendes: ich habe zwei buttons(ja, nein; als bsp.)
wenn ich auf ja drücke, soll startTimer() und wenn ich auf nein drücke chancelTimer(), gestartet werden. dadurch wird meine als private deklariete variable "sollichodernicht" zurückgeliefert werden.
in der main soll in abhängigkeit zu dieser variable, mein timer gestartet werden, aber es klappt nicht! ich wusste nicht ob es mehr basic cpp oder mehr qt ist.
woran liegt es? ich hoffe man kann mir weiter helfen.
mfg daniel

Code: Alles auswählen

//das ist meine form.ui.h
 
 void gui::chancelTimer() {
    sollichodernicht = false;} 
 
 void gui::startTimer() {
    sollichodernicht = true;}
 
 bool gui::boolTimer()
 {     
   return sollichodernicht;
 }

Code: Alles auswählen

//meine main
gui window; //ganz normales projektfenster
TCounter T; //meine klasse eine  abgewandelte qlcdnumber

   if(window.boolTimer() == true ) {
      T.setTime(window.getTime() );
      T.startTimer();
   }
   else 
      T.stopTimer();
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Re: problem mit privater variable....

Beitrag von Goos »

slash-ex hat geschrieben:aber es klappt nicht!
...das ist auch keine wirklich ausreichende Fehlerbeschreibung.
Vielleicht hast dabei ja auch immer nur Stromausfaelle, wuerde auch erklaeren, wieso es nicht klappt ;)

Goos
slash-ex
Beiträge: 239
Registriert: 30. März 2005 21:40

Beitrag von slash-ex »

der lcd zeit einfach null an! es kann nur ander überprüfung die ich gepostet habe liegen, denn die funktionen funktionieren.
ich hatte ja geschrieben das ich mit einem lick auf dem button einen boolschen wert zurückliefern will... dafür diese funktionen und in der main will ich dann die variable abfragen(mit der get-funktion "boolTimer()")
aber sie scheint anscheinend keinen wert zu besitzen, drück ich auf den button müsste die private variable true werden und der timer starten.
wie würdest du sonne abfrage machen, wenn du zwei klassen hast?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Mit friend.
slash-ex
Beiträge: 239
Registriert: 30. März 2005 21:40

Beitrag von slash-ex »

das ist doch müll, guck dir doch den code oben in der main an, die member muss bei existenter variable die private zurückliefern.
friend doch was für funktionen außerhalb von klassen.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

wie würdest du sonne abfrage machen, wenn du zwei klassen hast?
mit friend.
Eine Klasse als friend definiert kann die privaten variablen dieser Klasse mitbenutzen.
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

Hi slash-ex,

poste doch mal die gesamte main.
..und friends waeren halt die Alternative zu deiner boolTimer() Methode.
Waer allerdings nicht nach meinem persoenlichen Geschmack ;)
"gui window; //ganz normales projektfenster" <-- was bitte ist ein ganz normales Prjektfenster? Eine Klasse QGanzNormalesProjektfenster ist mir noch nicht begegnet :D

Goos
slash-ex
Beiträge: 239
Registriert: 30. März 2005 21:40

Beitrag von slash-ex »

ich habe nach dem friend tipp mir die anwendung angeschaut, und ich bin zum schluss gekommen, das es mir wahrscheinlich nichts nutzt.
nun ich bin in sachen oop noch recht(sehr) frisch. aber sonne abfrage sollte nicht allzu schwierig sein :(
bei nachfrage poste ich auch noch die gesamte TCounter klasse samt implementation...
ich habe den qt-designer benutzt und unter der rubrik "member" meine variable angelegt, das war doch richtig?! schließlich habe ich nirgends eine projektklasse gefunden.

Code: Alles auswählen

//form.ui.h
 void eagle_gui::chancelTimer() {
    sollichodernicht = false;
    boolTimer();
} 
 
 void eagle_gui::startTimer() {
    sollichodernicht = true;
    boolTimer();
}
 
 bool eagle_gui::boolTimer()
 {
     return sollichodernicht;
 }

Code: Alles auswählen

//main.h

...
#include "lcd.h"
#include "form1.h"
//#include "stats.h"


int main( int argc, char ** argv )
{
   KCmdLineArgs::init(argc, argv, "keagle", "keagle", "0.1");
   KApplication app;
   eagle_gui window;
   //app.setMainWidget(&window);

   TCounter T; //modifizierter lcdnumber
   app.setMainWidget( &T ); //testweise
   T.show();  
  
  // T.setTime(window.getTime() );
   //std::cout<<window.boolTimer()<<endl;  //bekomme merkwürdige werte?!
  
   if(window.boolTimer() == true ) {  //die abfrage an der ich ein problem habe
      T.setTime(window.getTime() );  //eine selbstgemachte member
      T.startTimer();
   }
   else 
      T.stopTimer();
         
   //std::cout<<T.getTime()<<endl;

//NICHT MEHR WICHTIG   
   window.setUserEdit();
   window.initGroupBox();
   window.SetLedStat();
   window.adjustSize();
   
   window.show();
   app.connect( &app, SIGNAL( lastWindowClosed() ), &app, SLOT( quit() ) );
   
   KSystemTray* tray = new KSystemTray(&window, "Hallo");
   tray->setPixmap(QPixmap("network_traffic.png"));
   tray->show();
   if(tray->isVisible())
       window.hide();
 
   return app.exec();
}
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

Moin,
ich weiss zwar nicht recht, was du im Gesamten anstellen willst, aber du darfst nicht davon ausgehen, dass dein Programm nach deinem T.show() anhaelt. Wenn du in T irgendwas druecken willst und das danach ueber eine Variable abfragen willst, dann sollte TCounter abgeleitet sein von QDialog und aufgerufen werden mit exec() und nicht show().

Goos
Antworten