PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QLineEdit->text(): Segmentation fault



boom1992
12-05-2007, 14:49
Hallo!
Ich habe ein Problem bei auslesen des Textes eines QLineEdits:

QString bla=inputline->text();

Ergibt im gdb:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1224018224 (LWP 10866)]
0xb7bdf170 in QLineEdit::text () from /usr/lib/libQtGui.so.4

Kann mir jemand dabei helfen?

Gruß

boom1992

locus vivendi
12-05-2007, 16:19
Bitte vollständigen Programcode posten der das Problem reproduziert, möglichst auf das wesentliche reduziert. Ein kompletter Backtrace wäre evtl. auch nützlich.

Boron
12-05-2007, 16:20
Ist inputline evtl. nur ein
QLineEdit* inputline;

Oder doch ein
QLineEdit* inputline = new QLineEdit;

(An die zwei Sätze die Fragezeichen hinzudenken ;))

boom1992
12-05-2007, 17:33
Hallo!
Ich habe das Interface mit dem Designer erstellt.

Also hier der gesamte Programmcode:
MyVideoEnkoder.h: http://www.ubuntuusers.de/paste/10630/
MyVideoEnkoder.cpp: http://www.ubuntuusers.de/paste/10631/
main.cpp: http://www.ubuntuusers.de/paste/10632/
ui_MyVideoEnkoderMainWindow: http://www.ubuntuusers.de/paste/10633/
Hinzu kommen noch zwei weitere Ui-Files + der abgeleitete Klassen, welche aber unwichtig sind.
Der relevante Code:

void MyVideoEnkoder::on_startbutton_clicked()
{
//reads values of Combo- and Spinboxes and sets as public variables
m_inputline = inputline->text();
m_outputline = outputline->text();
m_VBSpin=m_VBSpin.setNum(VBSpin->value());
m_ABSpin=m_ABSpin.setNum(ABSpin->value());
m_VCCombo=VCCombo->currentText();
m_ACCombo=ACCombo->currentText();
m_FPSSpin=m_FPSSpin.setNum(FPSSpin->value());
m_delayspin=m_delayspin.setNum(delayspin->value());
m_scale1box=m_scale1box.setNum(scale1box->value());
m_scale2box=m_scale2box.setNum(scale2box->value());
m_cropbox1=m_cropbox1.setNum(cropbox1->value());
m_cropbox2=m_cropbox2.setNum(cropbox2->value());
m_cropsize1box=m_cropsize1box.setNum(cropsize1box->value());
m_cropsize2box=m_cropsize2box.setNum(cropsize2box->value());
m_backendcombo=backendcombo->currentText();

/**What backend should be used**/
if( m_backendcombo == "MEncoder")
MEncoder();
if( m_backendcombo == "FFMpeg")
FFMpeg();
if( m_backendcombo == "Transcode")
Transcode();
}


Gruß

boom1992

locus vivendi
12-05-2007, 18:20
Dass MyVideoEnkoder sowohl von Ui::MyVideoEnkoderMainWindow erbt, als auch ein Ui::MyVideoEnkoderMainWindow enthält kommt mir verdächtig vor.
Ansonsten glaube ich, dass du vergessen hast die setupUi Funktion der Basisklasse aufzurufen (Füge doch mal in den MyVideoEnkoder Konstruktor "setupUi(this);" zur Probe ein, und schaue was passiert).

boom1992
12-05-2007, 21:26
Das zweite Ui::MyVideoEnkoderMainWindow soll eigentlich nur bewirken, dass ich statt Ui::MyVideoEnkoderMainWindow als ui ansprechen kann und setupUi ist ja schon in der Basisklasse enthalten:

MyVideoEnkoder::MyVideoEnkoder()
{
ui.setupUi(this);
};

Gruß

boom1992