Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

02.07.2022, 11:59

Segmentation fault

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Formular::Formular(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Formular)
{
    ui->setupUi(this);
}

Formular::~Formular()
{
    delete ui;
}

//der Slot
void Formular::on_buttonkopieren_clicked()
{
    //der Text aus dem einen Label in das andere kopieren damit der Zugriff gelingt,muss ui vor die Bezeichner gesetzt werden
    ui->LabelRechts->setText(ui->LabelLinks->text());
}

void Formular::on_comboBox_activated()
{
    //den Text aus dem Kombinationsfeld in das Eingabefeld kopieren
    ui->lineEdit->setText(ui->comboBox->currentText());

}


//der Slot für die Änderung im Kontrollkästchen
void Formular::on_checkBox_toggled(bool aktiv)
{
    int schriftGroesse;
    //wenn das Feld markiert ist, wird die Schriftgröße auf 20 gesetzt
    if(aktiv==true)
        schriftGroesse=20;

    //sonst wird die Schriftgröße auf 10 gesetzt
    else
      schriftGroesse=10;
    ui->LabelLinks->setFont(QFont("Arial",schriftGroesse));
    ui->LabelRechts->setFont(QFont("Arial",schriftGroesse));
}


void Formular::on_tauscheLabels_clicked()            // den Button will ich noch hinzufügen.
{

    QString A=ui->LabelRechts->text();                //Hier ist glaub der Fehler <-------------------------------
    on_tauscheLabels_clicked();
    ui->LabelLinks->setText(A);



}




Ich versuche mit dem Button "tausche Labels" den Text von A nach B und von B nach A zu kopieren. Also die Labels sollen getauscht werden, wenn ich den Button tauscheLabels drücke. Ich kriege hier aber immer ein Segmentfehler. So wie ich das verstanden habe, ist das irgendein Speicherfehler. Wie kann ich das lösen? Das ist meine "Cpp Datei"


Buttonkopieren.clicked() funktioniert.
»MaxB96« hat folgendes Bild angehängt:
  • 1.PNG

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

2

02.07.2022, 12:18

Die Methode "on_tauscheLabels_clicked" ruft sich ständig selber auf ohne eine Bedingung. Das ist ein klassischer StackOverflow ;)

3

02.07.2022, 13:06

Es ruft sich ständig selber auf? Es ruft sich doch nur auf wenn ich auf den Button klicke. Das ist doch keine Schleife.

QString A=ui->LabelRechts->text(); //Hier ist glaub der Fehler <-------------------------------
on_tauscheLabels_clicked(); //hier klicke ich
ui->LabelLinks->setText(A);

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

4

02.07.2022, 13:12

Ich geh mal davon aus, dass die Methode als Slot mit dem Clicked-Event von deinem Button verbunden ist (Qt ist bei mir laaange her, aber ca so läuft das ja)

Wenn du jetzt also auf den Button clickst, wird on_tauscheLabels_clicked aufgerufen.

Und die Methode macht eben folgendes:

Quellcode

1
2
3
4
5
6
7
8
Hole text und speicher ihn in variable
Rufe on_tauscheLabels_clicked auf
   Hole text und speicher ihn in variable   
   Rufe on_tauscheLabels_clicked auf
      Hole text und speicher ihn in variable   
      Rufe on_tauscheLabels_clicked auf
         Hole text und speicher ihn in variable
         ...


Und das geht ewig so weiter.

5

02.07.2022, 19:19

Ok,danke.

Werbeanzeige