hat sich erledigt..danke
Beiträge von soul
-
-
Wolfibolfi
könnt ich dir evtl. meinen Code zuschicken? könntest du mir da weiter helfen? ist nur ne frage..musst nicht machen wenn du nicht willst..bin grad nur total verzweifelt und muss das heute noch fertig machen -
hab das jetzt so gemacht aber leider funktioniert das immer noch nicht. jetzt gehen lauter streifen von oben bis unten durch über die ganze fläche
-
Hallo zusammen,
kann mir jemand bei meinem Programm weiterhelfen?
Ich muss ein Signal zeichnen und hatte die x,y -Punkte frei gewaehlt gehabt. Jetzt soll ich das aber nicht so machen, da das Signal nicht richtig rauskommt. Ich komm da aber nicht weiter. Hier ist der bisherige Code:Code
Alles anzeigenvoid drawwidget::paintEvent(QPaintEvent * event){ QPainter painter(this); QPainterPath painterpath_signal; position_xRichtung = 10; position_yRichtung = 300; if(signalwerte.size() != 0){ painter.drawText(300,30,QString::number(segment) + ". Segment"); painter.setFont(QFont("Arial", 10, QFont::Bold)); painterpath_signal.moveTo(position_xRichtung, position_yRichtung); //keinen selber gesetzten punkt waehlen, sondern startpunkt ermitteln for(int i = start; i < end; i++){ painterpath_signal.lineTo(position_xRichtung + 1, signalwerte.at(i) * (ymax-ymin) + position_yRichtung); position_xRichtung = position_xRichtung + 1; } drawCoordinates(painter); painter.setPen(Qt::red); } painter.drawPath(painterpath_signal); } //hoechsten wert des signals ausrechnen. alle werte mit schleife //durchlaufen und den hoechsten ermitteln. //koordinatentransformation muss rein. void drawwidget::ymaxi() { for(int i = start; i <= signalwerte.size(); i++) { if (signalwerte.at(i) > signalwerte.at(i-1)) { ymax = i; } } } //niedrigsten wert des signals ausrechnen. alle werte mit schleife //durchlaufen und den niedrigsten ermitteln. //Koordinatentransformation muss rein. void drawwidget::ymini() { for(int j = start; j <= signalwerte.size(); j++) { if (signalwerte.at(j) < signalwerte.at(j-1)) { ymin = j; } } } void drawwidget::drawCoordinates(QPainter &painter) { painter.setPen(Qt::black); painter.drawLine(10, 300, signalwerte.size(), 300); painter.drawText(670, 350, tr("x")); painter.drawLine(10, 10, 10, 490); painter.drawText(15, 20, tr("y")); }
Also ich muss jetzt statt position_xRichtung und position_yRichtung ermittelte Werte setzen. Und die 2 Methoden ymaxi() und ymini() richtig implementieren. Weiss auch nicht ob es bisher so stimmt und dann die Werte in die Methode paintEvent() einsetzen.
Komm wirklich nicht weiter. Wäre für jede Hilfe dankbar
-
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
-
habs jetzt selber rausbekommen..trotzdem danke
-
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. -
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
-
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
Alles anzeigenvoid 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(); }
Danke im Voraus!