SIGSEGV nur unter Linux bei Datenübernahme aus einem Wizard
Verfasst: 23. November 2010 13:47
Hallo Community,
ich habe ein relativ seltsames (und vielleicht auch betriebssystemspezifisches) Problem bei der Übernahme von Daten aus einem Wizard.
Ich definiere und fülle in diesem Wizard die Variable "header" folgendermaßen:
Im Hauptprogramm wird der Inhalt der QStringList dann so eingefügt:
Unter Windows und MacOS X funktioniert das alles auch und zum Schluss ist dann der Header in dem MDI-Fenster. Unter Linux passiert abwechselnd nichts, oder es gibt einen Segmentation fault. Ich habe leider keine Ahnung, was genau da schiefläuft und habe offen gestanden auch zu wenig Ahnung von den Unterschieden der Fensterverwaltung in den einzelnen Betriebssystemen, die möglicherweise dafür verantwortlich sind. Möglicherweise habe ich auch einfach nur Glück unter Windows und Mac OS X und das geht gar nicht so... 
Wer hat Ideen zu diesem Problem? Über jedes "Augenöffnen" bin ich sehr dankbar, da auch Linux zu meinen Zielsystemen gehört und das natürlich blöd ist, dass es hier noch nicht funktioniert.
Liebe Grüße
barahir1983
ich habe ein relativ seltsames (und vielleicht auch betriebssystemspezifisches) Problem bei der Übernahme von Daten aus einem Wizard.
Ich definiere und fülle in diesem Wizard die Variable "header" folgendermaßen:
Code: Alles auswählen
public:
explicit NAHeaderWizard(QWidget *parent = 0);
~NAHeaderWizard();
QStringList header;
...
void NAHeaderWizard::accept()
{
header.append("name:"+ui->nameE->text()+";");
if (!ui->commentaryE->text().isEmpty())
header.append("commentary:"+ui->commentaryE->text()+";");
if (!ui->annotation1E->text().isEmpty())
header.append("annotation:"+ui->annotation1E->text()+";");
if (!ui->annotation2E->text().isEmpty())
header.append("annotation:"+ui->annotation2E->text()+";");
... (hier folgen noch weitere Aufnahmen in die StringList)
QDialog::accept();
}
Code: Alles auswählen
void NaProg::on_actionHeader_Wizard_triggered()
{
NAHeaderWizard wiz;
if (activeMdiChild())
{
if (wiz.exec() == QDialog::Accepted)
{
QStringList::const_iterator it;
for (it= wiz.header.constBegin(); it!= wiz.header.constEnd();++it)
{
activeMdiChild()->append(*it);
}
}
}
else
{
neu();
if (wiz.exec() == QDialog::Accepted)
{
QStringList::const_iterator it;
for (it= wiz.header.constBegin(); it!= wiz.header.constEnd();++it)
{
activeMdiChild()->append(*it);
}
activeMdiChild()->append("");
on_actionClef_triggered();
}
}
}
Wer hat Ideen zu diesem Problem? Über jedes "Augenöffnen" bin ich sehr dankbar, da auch Linux zu meinen Zielsystemen gehört und das natürlich blöd ist, dass es hier noch nicht funktioniert.
Liebe Grüße
barahir1983