Seite 1 von 1

Programm segfaulted

Verfasst: 31. März 2008 13:09
von bueffel2
Hallo,

ich habe ein problem und zwar stuerzt mein Programm immer ab wenn ich einen slot mit einem signal verbinden will ueber connect.
Folgender Code:

Code: Alles auswählen

  connect(prc, SIGNAL(readyReadStdout() ), this, SLOT( checkFile_ready() ) );
  connect(prc, SIGNAL(processExited() ),   this, SLOT( checkFile_finished() ) ); 
Da will ich prc mit den entsprechenden signalen und slots verbinden.
prc sieht so aus:

Code: Alles auswählen

QProcess  *prc;
Es kommt einfach nur ein segmentation fault. gdb sagt es liegt am connect...

Ist vielleicht jemand von euch so nett und koennte mich korrigieren?

danke

buffalo

Verfasst: 31. März 2008 13:13
von PeterLustig
Du erstellst einen Pointer zu einem QProcess, aber erstellst du die eigentliche Instanz auch (new QProcess)? Natürlich vor dem connect.

Verfasst: 31. März 2008 13:25
von bueffel2
Also in der Datei selber ist das Objekt erstellen nach dem connect.
Muss es vor den connect stehen?
Also rein von der Ordnung?

Hatte mir das selbe naemlich auch gedacht. Aber dachte QT waer so schlau, dass er das bemerkt.

Verfasst: 31. März 2008 13:26
von PeterLustig
So schlau kann Qt garnicht sein. Du willst ein nicht existierende Objekt verbinden.. Das kann natürlich nur schief gehen.

Dein Pointer ist zur Zeit des connect nicht initialisiert, also er zeigt _irgendwo_ im Speicher hin. Und später möchtest du das Objekt das an dieser Stelle im Speicher liegt verbinden, nur das Objekt exisiert garnicht -> segfault.

Verfasst: 31. März 2008 13:30
von bueffel2
okay. dann teste ich das gleich mal.
macht alles sinn was du gesagt hast.
Ich bedanke mich vielmals und entschuldige mich fuer eine vielleicht bloede Frage! :)

Vielleicht klappts ja dann

Verfasst: 31. März 2008 13:50
von bueffel2
Ist eohl noch nicht so ausgereift.
Nun bekomm ich naemlich mit:

Code: Alles auswählen

  connect(prc, SIGNAL( readyReadStandardOutput() ), this, SLOT( checkFile_ready() ) );
  connect(prc, SIGNAL( finished() ),   this, SLOT( checkFile_finished() ) );
Object::connect: No such signal QProcess::finished()

Weiss jemand was da passiert ist?
Folgendes ist mein Funktionskopf:

MyWindow::MyWindow( QMainWindow *parent,
Qt::WindowFlags flags) : QMainWindow(parent, flags) {

Verfasst: 31. März 2008 13:57
von Christian81
Es gibt auch kein Signal finished() ...

Siehe http://doc.trolltech.com/4.3/qprocess.html#finished

Verfasst: 31. März 2008 13:58
von bueffel2
klappt

Verfasst: 31. März 2008 14:00
von bueffel2
Hat sich erledigt! Klappt

Verfasst: 31. März 2008 14:02
von Christian81
Was meinst Du?