[gelöst] problem beim compillieren...

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

[gelöst] problem beim compillieren...

Beitrag von slash-ex »

irgendwie will es einfach nicht funktionieren! ich benutze den Qt-Designer, ich habe in der Klassenimplementation "eagle_gui" mit dem designer schon die public membervariable "QTime timer" erstellt. unten seht ihr die auf diese klasse bezogenen funktionen.
in der main habe ich das dann verknüpft. ich weiß nicht ob der code richtig ist, vielleicht kann ja wer korrigieren :oops:

ich bekomm allerdings beim kompillieren probleme.

Code: Alles auswählen

Link: warning ....:keine qbjektdateien angegeben, bibliotheken werden verwendet
link: warning ...:/MACHINE nicht festgelegt: Standartwert X86
LINK: fataler fehler ...:keine ausgabedatei angegeben
NMAKE fater fehler:...:"link" Rueckgabecode "0x487" STOP
unter linux hats auch nicht geklappt hatter allerdings etwas anderen code.
ich habe best. etwas verkehrt gemacht...

mfg daniel

Code: Alles auswählen

//eagle_gui class


 void eagle_gui::setzeZeit(int x) 
 {
    lcdvalue = x;
    lCDNumber_time_remaining->display(x);
 }

 void eagle_gui::startTimer()
 {
    timer.start(1000, false);   
 }

 void eagle_gui::time_out() 
 {     
    lCDNumber_time_remaining->display( lcdvalue -1);
    if (lcdvalue == 0) {
      TCounter T;
      QMessageBox::information( this, "Timer", "Zeit abgelaufen; Verbindung wird jetzt getrennt." );
    }
 }

Code: Alles auswählen

#include <qapplication.h>
...


int main( int argc, char ** argv )
{
   QApplication app( argc, argv );
   eagle_gui window;
   
   QObject::connect( window.slider_timeadj, SIGNAL(sliderMoved(int) ), &window, SLOT(setzeZeit(int) ) );
   //Counter
   QObject::connect( &(window.timer), SIGNAL(timeout()), &window, SLOT(time_out() ) );
   
   //QObject::connect( window.slider_timeadj, SIGNAL(sliderMoved(int) ), &window, SLOT(display(int)));
   
   QObject::connect( window.pushButton_setTime, SIGNAL(clicked() ), &window, SLOT(window.startTimer() ) );
   
 ...
   return app.exec();
}
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Also wenn ich das richtig deute, bekommst du Probleme mit dem linken, aber nicht mit dem builden. Könntest du mal deine *.pro Datei posten, von der du baust? Oder baust du direkt aus Visual Studio? Denn wenn ich richtig liege fehlt ein Name (target) für die Ausfühbare. Gut, manche Fehler sind so und heißen etwas ganz anderes.
slash-ex
Beiträge: 239
Registriert: 30. März 2005 21:40

Beitrag von slash-ex »

ich nem einfach zum builden den "scheiß" -shell -ersatz
cmd, warum nicht "sse" :P

Code: Alles auswählen

TEMPLATE	= app
LANGUAGE	= C++

CONFIG	+= qt warn_on release

LIBS	+= -L/opt/kde3/lib/ -lkio

INCLUDEPATH	+= /opt/kde3/include

HEADERS	+= stats.h \
	mainview.h

SOURCES	+= main.cpp

FORMS	= form1.ui

IMAGES	= icons/button_cancel.png \
	icons/exit.png \
	icons/redo.png \
	kpf.png \
	button_ok.png

unix {
  UI_DIR = .ui
  MOC_DIR = .moc
  OBJECTS_DIR = .obj
}
jetzt wo, dus sagst, fällt mir auch etwas auf,... :oops:
thx

nur herunterzählen tut er leider noch nicht, weiß du wie ich das noch in den griff bekomm?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Mh, man müsste sich mal die ganzen Dateien dazu ansehen, denn das er nicht herunterzähl kann ich so nicht feststellen, das sieht alles brauchbar aus. Meine Vermutung ist, dass die GUI Klasse erst gezeigt (show) werden muss, bevor dort MessageBoxes funktionieren. Versuch mal aus dem this eine 0 oder 0L zu machen und gucke, ob es bei einem Fehler die MessageBox zeigt. Dann ist es der gerade genannte Fehler, sonst poste mal die ganzen Dateien.
slash-ex
Beiträge: 239
Registriert: 30. März 2005 21:40

Beitrag von slash-ex »

danke für die schnelle antwort, die messageboxes funzen, hab mal zur überprüfung der connections in jede funktion eine gepackt;
... also ich habe aus

Code: Alles auswählen

  QObject::connect( window.pushButton_setTime, SIGNAL(clicked() ), &window, SLOT(window.startTimer() ) ); 
das gemacht:

Code: Alles auswählen

   QObject::connect( window.pushButton_setTime, SIGNAL(clicked() ), &window, SLOT(startTimer() ) );
jetzt zählt er mit:

Code: Alles auswählen

 void eagle_gui::time_out()
 {     
    lCDNumber_time_remaining->display( lcdvalue -1);
    if (lcdvalue == 0)
      QMessageBox::information( this, "Timer", "Zeit abgelaufen; Verbindung wird jetzt getrennt." );
 }
um "eins" runter allerdings nur einmal??? also muss wahrscheinlich

Code: Alles auswählen

QObject::connect( &(window.timer), SIGNAL(timeout()), &window, SLOT(time_out() ) ); 
kaputt sein :roll:
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Mensch, du machst da aber auch wieder komische Dinge. Wenn du den Timer so definierst, wie er jetzt ist, ist er nicht als SingleShot, d.h. er sollte weiter laufen. Wenn er das "nicht tut", sollte es an dem Wert liegen, hast du das mal per Hand debuggt? Also mit lcdvalue ausgeben, oder so? Dann siehst du ja gleich, ob es wirklich der Timer ist, oder nicht. Was ich glaube:
lcdvalue wird nicht um eins reduziert. Eben nur einmal, aber dann nicht mit dem neuen Wert überschrieben, er bleibt also immer der gleiche Wert. mach einfach --lcdvalue, anstelle von lcdvalue - 1, dann geht das auch.
slash-ex
Beiträge: 239
Registriert: 30. März 2005 21:40

Beitrag von slash-ex »

du lagst genau richtig. 8)
Antworten