ScatterChart Example als widget/label in MainWindow integrieren

Alles rund um die Programmierung mit Qt
Antworten
freakonaleash99
Beiträge: 43
Registriert: 23. Juli 2017 12:35

ScatterChart Example als widget/label in MainWindow integrieren

Beitrag von freakonaleash99 »

Hallo zusammen,
ich bin noch recht unerfahren in Qt und c++ und taste mich so Stück für Stück ran. Aktuell stehe ich vor dem Problem, dass ich gerne eine "ScatterChart" (QChartView) in einem widget, welches in einem QMainWindows integriert ist (also mehrere Buttons, Textfelder usw.), per Knopfdruck darstellen würde.
Es geht dabei um folgendes Qt Example: https://doc.qt.io/qt-5/qtcharts-scatter ... ample.html

Im letzten Schritt des Beispiels wird ja "Chartview" als "CentralWidget" gesetzt:

Code: Alles auswählen

    ChartView *chartView = new ChartView();
    QMainWindow window;
    window.setCentralWidget(chartView);
Eigentlich dachte ich, dass es einfach sein müsste und das es in etwa so gelöst werden könnte:

Code: Alles auswählen

ui->widget.setXXX(chartView);
Allerdings gibt es keine derartige Funktion, die das erfüllt. Generell habe ich auch Probleme damit, was ich wem übergeben kann. Z.B muss man ja auch, wenn mein eigene Zeichnungen mit dem "Painter" zeichnen will, zuerst in eine Pixmap zeichnen um diese dann an ein Label zu übergeben. Direkt in ein Label zu zeichnen geht ja auch nicht.

Kann mir jemand sagen, wie man
1. das oben genannte Vorhaben umsetzten kann?
2. wie ich mich da allgemein besser einarbeiten kann, was was die Übergabe von Objekten betrifft? (Also was benutzt man wann?) Die Qt Hilfe bringt mich da irgendwie nicht weiter.


Vielen Dank

Grüße
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: ScatterChart Example als widget/label in MainWindow integrieren

Beitrag von Christian81 »

Am einfachsten ist es, wenn das ChartView - Widget als custom widget promoted wird -> http://doc.qt.io/qt-5/designer-using-cu ... dgets.html
Ansonsten geht es nur (sinnvoll), wenn man die ui komplett selbst von Hand aufbaut, also kein .ui - File benutzt sondern alles selbst programmiert. Wenn im Layout nichts weiter drin ist, sollte dies aber auch kein Problem sein. Dazu kann man sich einfach die setupUi() - Funktion anschauen welche aus der .ui - Datei generiert wird.

/edit: wie man auch innder setupUi() - Funktion sieht benötigt man immer ein Layout im auf einem QWidget andere Widgets platzieren zu können da sonst ja nicht klar ist, wie die Widgets anzuordnen sind -> http://doc.qt.io/qt-5/qtwidgets-layouts ... ample.html
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
freakonaleash99
Beiträge: 43
Registriert: 23. Juli 2017 12:35

Re: ScatterChart Example als widget/label in MainWindow integrieren

Beitrag von freakonaleash99 »

Super, Variante 1 hat funktioniert.
jetzt gibt es leider ein weiteres Problem. In dem Beispiel wird ja die "Konfiguration" der Chart (also hinzufügen von punkten, Achsenskalierung usw.) im Konstruktor durchgeführt. Mein Ziel ist es jetzt aber, per Button eine Textdatei zu suchen und zu laden, in der die Koordinaten stehen, und die Chart erst dann zu zeichnen, inkl. Achsenskalierung. Dazu habe ich in der ChartView Klasse eine neue Funktion erstellt "drawChart(QString file)" in den ich den Code aus dem Konstruktor übernommen habe (Konstruktor > Standardkonstruktor). Per Button wird eine Instand erstellt und per drawChart() die Zeichnung durchgeführt.
Allerdings wird jetzt natürlich mein Widget, bzw. jetzt CustomWidget nicht aktualisiert, sondern bleibt leer. Ich bräuchte also eine Funktion "aktualisieren"...
Leider finde ich nichts. Jemand ne Idee?

@Christian81: Danke für deine Unterstützung. Aber: Bist du der einzige in diesem Forum der Tipps gibt? :)

Edit: Hab mit Signal Button > Widget "update()" bzw. "repaint()" versucht, ohne erfolg
freakonaleash99
Beiträge: 43
Registriert: 23. Juli 2017 12:35

Re: ScatterChart Example als widget/label in MainWindow integrieren

Beitrag von freakonaleash99 »

Habs geschafft..... Thema ist erledigt.
Antworten