1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

C++ - Brauche dringend Hilfe!

  • soul
  • 27. Januar 2010 um 17:22
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • soul
    Punkte
    55
    Beiträge
    9
    • 27. Januar 2010 um 17:22
    • #1

    Hallo zusammen,
    also ich hab da ein C++-Programm erstellt in Qt.
    Das Programm kann Patientendaten sowie das zugehörige EKG anzeigen.
    Bisher funktioniert es so: Wenn ich das Programm starte, erscheint das Hauptfenster (leeres Fenster mit Menü). Wenn ich auf "öffnen" klicke, öffnet sich ein Dialog um das EKG-Signal auszuwählen und das kann ich dann auf dem Hauptfenster anzeigen lassen. Dann kann ich auch von dem EKG-Signal verschiedene Abschnitte (Segmente) anzeigen lassen.
    Wenn ich jetzt auf schliessen klicke, erscheint wieder das Hauptfenster. Wenn ich dann wieder ein Signal öffnen möchte kommt auch wieder Dialog um ein Signal auszuwählen.
    PROBLEM: aber wenn ich ein Signal jetzt auswähle, wird es nicht mehr angezeigt.

    Kann mir da BITTE jemand sagen wo mein Fehler liegt?

    Mein Code:

    Code
    void MainWindow::on_actionDatei_Oeffnen_triggered()
      {
          QString fileName;
          fileName = QFileDialog::getOpenFileName(this,tr("Biosignal öffnen"),
                     "/home/", "Biosignal-Dateien (*.sig)");
          patient = new Patient();
          patient->DateiLesen(fileName);
          setWindowTitle(patient->getVorname()
                         + " " + patient->getNachname()
                         + " " + patient->getGeburtsdatum().toString("dd.MM.yyyy")
                         + ":" + patient->getMessungsart() + " ");
          ui->widget->setStart(0); //setzt den Startpunkt des Signals
          ui->widget->setEnd(700); //setzt den Endpunkt des ersten Segments
                                              //auf die Größe des Fenster
          ui->widget->setSegment(1); //setzt das erste Segment (den ersten
                                                 //Abschnitt)
          ui->widget->setFixedSize(700,500);
          ui->widget->setSignalwerte(patient->getSignalwerte());
          ui->widget->update();
      }
    
      void MainWindow::on_actionDatei_Schliessen_triggered()
      {
          setWindowTitle("EKGViewer");
          QVector <float> signalwerte;
          patient->setSignalwerte(signalwerte);
          ui->widget->close();
          ui->widget->update();
      }
    Alles anzeigen

    Danke im Voraus!

  • michi204
    Punkte
    7.268
    Beiträge
    1.318
    • 27. Januar 2010 um 18:02
    • #2

    ich weiß nicht, was für ein objekt widget ist, aber wenn du darauf close() aufrufst ist es danach vermutlich nicht mehr ohne weiteres verwendbar, sofern es den event verarbeitet. ich versteh auch nicht ganz warum du danach noch mal update() aufrufst oder warum du davor noch schnell die signalwerte setzt.

    lg

  • soul
    Punkte
    55
    Beiträge
    9
    • 27. Januar 2010 um 18:15
    • #3

    also das widget ist der Teil des Fensters, in dem das Signal angezeigt wird. Das mit den Signalwerten stimmt natürlich, die sind unnötig.
    Wie kann ich das denn jetzt aber machen, das ich ein neues Signal wieder öffnen kann?

    Gruss

  • yrucrem
    Punkte
    129
    Beiträge
    25
    • 27. Januar 2010 um 19:28
    • #4

    Vermutlich wuerde es reichen, wenn Du QWidget::show() und QWidget::hide() verwendest um das Widget, das das Signal anzeigt, zu "oeffnen" und zu "schlieszen".

  • soul
    Punkte
    55
    Beiträge
    9
    • 27. Januar 2010 um 20:42
    • #5

    durch QWidget::hide wird aber das ganze Programm beendet und das Fenster geschlossen.
    Ich wollte es so haben, dass nur das Signal geschlossen wird und ich dann wieder ein neues Signal öffnen kann. Im Moment kann ich das Signal zwar schliessen, aber kein neues mehr öffnen.

  • soul
    Punkte
    55
    Beiträge
    9
    • 28. Januar 2010 um 18:20
    • #6

    habs jetzt selber rausbekommen..trotzdem danke

  • Kampi
    Punkte
    7.828
    Beiträge
    1.468
    • 28. Januar 2010 um 18:26
    • #7

    und waerst du bitte so nett uns die loesung mitzuteilen?

  • soul
    Punkte
    55
    Beiträge
    9
    • 28. Januar 2010 um 20:58
    • #8

    ganz einfach eigentlich. also ich hab das mit setVisible gemacht. fürs schliessen der datei einmal false gesetzt und fürs öffnen der datei wieder true gesetzt. jetzt funktionierts

  • bimbo
    Punkte
    2.320
    Beiträge
    390
    • 29. Januar 2010 um 09:38
    • #9

    Wenn ich nur kurz in die Doku von Qt 4.2 reinschnupper, dann sehe ich:

    Zitat

    void QWidget::hide () [slot]
    Hides the widget. This function is equivalent to setVisible(false).

    void QWidget::show () [slot]
    Shows the widget and its child widgets. This function is equivalent to setVisible(true).

  • yrucrem
    Punkte
    129
    Beiträge
    25
    • 29. Januar 2010 um 09:54
    • #10

    Dachte ich auch, ja ;-).

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum