Widgets alle xSekunden aktualisieren?
Verfasst: 22. April 2016 16:06
Guten Tag,
ich möchte mit QT ein GUI erschaffen was mir mit Hilfe von QCustomplot verschiedene Daten visualisiert. Am Ende sollen die Daten aus einer Datenbank kommen, zum Testen nehme ich aber vorerst random Daten, spielt für die Frage aber auch nicht direkt eine Rolle sollte nur zur Info dienen.
Im Prinzip habe ich alles hinbekommen (verschiedene Plots auf dem Hauptfenster funktioniert prima) auf nur weiss ich nicht wie ich die Widgets allesamt im Intervall aktualisieren kann.
Hat vielleicht jemand einen Vorschlag wie man das machen kann, habe noch nicht so viel Erfahrung damit.
Ich hänge mal den Code an:
Gruß
ich möchte mit QT ein GUI erschaffen was mir mit Hilfe von QCustomplot verschiedene Daten visualisiert. Am Ende sollen die Daten aus einer Datenbank kommen, zum Testen nehme ich aber vorerst random Daten, spielt für die Frage aber auch nicht direkt eine Rolle sollte nur zur Info dienen.
Im Prinzip habe ich alles hinbekommen (verschiedene Plots auf dem Hauptfenster funktioniert prima) auf nur weiss ich nicht wie ich die Widgets allesamt im Intervall aktualisieren kann.
Hat vielleicht jemand einen Vorschlag wie man das machen kann, habe noch nicht so viel Erfahrung damit.
Ich hänge mal den Code an:
Code: Alles auswählen
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void makePlot();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
Code: Alles auswählen
//main.cpp
#include "mainwindow.h"
#include <QApplication> // hier befinden sich die QT-klassen drin
#include <QLabel>
#include <QWidget>
int main(int argc, char *argv[])
{
QApplication a(argc, argv); // Instanz der klasse wird angelegt und kommandozeilenparameter übergeben.
MainWindow w;
w.show(); // anzeige
return a.exec(); // startet event-schleife die ereignisse behandelt. rückgabewert ist auch rückgabewert für das programm.
}
Code: Alles auswählen
// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
MainWindow::makePlot();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::makePlot()
{
// Beispiel für eines der Widgets
// generate some data:
QVector<double> x(101), y(101); // initialize with entries 0..100
for (int i=0; i<101; ++i)
{
x[i] = i/50.0 - 1; // x goes from -1 to 1
y[i] = x[i]*x[i]; // let's plot a quadratic function
}
// create graph and assign data to it:
ui->customPlot->addGraph();
ui->customPlot->graph(0)->setData(x, y);
// give the axes some labels:
ui->customPlot->xAxis->setLabel("x");
ui->customPlot->yAxis->setLabel("y");
// set axes ranges, so we see all data:
ui->customPlot->xAxis->setRange(-1, 1);
ui->customPlot->yAxis->setRange(0, 1);
ui->customPlot->replot();
// usw...
// danach kommen noch weiterer widgets mit ui->customPlot2, ui->customPlot3 usw.
}