Seite 1 von 1

problem mit privater variable....

Verfasst: 13. April 2005 22:04
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();

Re: problem mit privater variable....

Verfasst: 14. April 2005 08:43
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

Verfasst: 14. April 2005 16:57
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?

Verfasst: 14. April 2005 19:09
von FlorianBecker
Mit friend.

Verfasst: 15. April 2005 15:02
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.

Verfasst: 15. April 2005 16:23
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.

Verfasst: 15. April 2005 17:05
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

Verfasst: 15. April 2005 20:48
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();
}

Verfasst: 18. April 2005 09:58
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