Fondo QT QCART no actualizado -- qt campo con qchart camp Relacionados El problema

Qt QChart background not updated


0
vote

problema

Español

Estoy usando QT5.9.6 y al cambiar el fondo de rangos de eje qchart no se actualiza. Tan pronto como se elija otra aplicación para ser actualizado.

ingrese la descripción de la imagen aquí

Después del cambio de rango

ingrese la descripción de la imagen aquí

¿Alguna idea? Gracias


Intenté crear un ejemplo representativo de mi solicitud, pero el ejemplo (desafortunadamente) funciona.

  #include <QtCharts/QChartView> #include <QtCharts/QLineSeries> #include <QtCharts/QScatterSeries> #include <QtCharts/QChart> #include <QtCharts/QValueAxis> #include <QDebug> #include <qslider> #include <QLayout> #include <qwidget> #include <QtMath> #include <QApplication>  QT_CHARTS_USE_NAMESPACE  int main(int argc, char *argv[]) {     QApplication         a {argc, argv};      struct {         const double nbr_of_per {5.5};         // number of samples         const int    nos        {(int)(nbr_of_per*200*M_PI)};     } sine_params;      const int      sld_max {sine_params.nos-1};     const double       div {100.0};     QSlider        *   sld {new QSlider{Qt::Horizontal}};     QChartView     *  view {new QtCharts::QChartView{}};     QChart         * chart {new QtCharts::QChart{}};     QLineSeries       sine {};     QScatterSeries   point {};      sld->setRange(0, sld_max);     chart->addSeries(&sine);     chart->addSeries(&point);  //    for(auto e: chart->series()) //        e->setUseOpenGL(true);      for(double i{}; i< sine_params.nos;i++)         sine.append(QPointF{i/div, sin(i/div)});      point.append(QPointF{});     point.setMarkerSize(20);      chart->legend()->hide();      QValueAxis x_ax;     x_ax.setRange(0, sine.pointsVector().last().x());     x_ax.setTickCount(5);     x_ax.setLabelFormat(QString{"%."+QString::number((int)log10(div))+"f"});     chart->setAxisX(&x_ax, &sine);     chart->setAxisX(&x_ax, &point);      QValueAxis y_ax;     y_ax.setRange(-1, 1);     y_ax.setTickCount(5);     y_ax.setLabelFormat("%.3f");     chart->setAxisY(&y_ax, &sine);     chart->setAxisY(&y_ax, &point);      QFont font{chart->axisX()->labelsFont()};     font.setPixelSize(20);     chart->axisX()->setLabelsFont(font);     chart->axisY()->setLabelsFont(font);      view->setChart(chart);     view->setRenderHint(QPainter::Antialiasing);      QVBoxLayout * vl{new QVBoxLayout};     vl->addWidget(view);     vl->addWidget(sld);      QWidget w;     w.setLayout(vl);     w.show();      QObject::connect(sld, &QSlider::valueChanged,         [=,&sine,&point](int val){             QPointF p{val/div, sine.at(val).y()};             point.clear();             point.append(p);             chart->axisX()->setRange(p.x()-(100/div), p.x()+(100/div));             chart->axisY()->setRange(p.y()-(.1), p.y()+.1);             // in my misbehaving application i have to use update() and only             // then I do not get 'leftovers' after changing axis ranges             // view->scene()->update(view->rect());         }     );      return a.exec(); }   

muy molesto

Original en ingles

I am using Qt5.9.6 and when changing QChart axis ranges background is not updated. As soon as other application is chosen to be active background is updated.

enter image description here

after range change

enter image description here

Any idea ? Thanks


I tried to create a representative example of my application but the example (unfortunately) works.

#include <QtCharts/QChartView> #include <QtCharts/QLineSeries> #include <QtCharts/QScatterSeries> #include <QtCharts/QChart> #include <QtCharts/QValueAxis> #include <QDebug> #include <qslider> #include <QLayout> #include <qwidget> #include <QtMath> #include <QApplication>  QT_CHARTS_USE_NAMESPACE  int main(int argc, char *argv[]) {     QApplication         a {argc, argv};      struct {         const double nbr_of_per {5.5};         // number of samples         const int    nos        {(int)(nbr_of_per*200*M_PI)};     } sine_params;      const int      sld_max {sine_params.nos-1};     const double       div {100.0};     QSlider        *   sld {new QSlider{Qt::Horizontal}};     QChartView     *  view {new QtCharts::QChartView{}};     QChart         * chart {new QtCharts::QChart{}};     QLineSeries       sine {};     QScatterSeries   point {};      sld->setRange(0, sld_max);     chart->addSeries(&sine);     chart->addSeries(&point);  //    for(auto e: chart->series()) //        e->setUseOpenGL(true);      for(double i{}; i< sine_params.nos;i++)         sine.append(QPointF{i/div, sin(i/div)});      point.append(QPointF{});     point.setMarkerSize(20);      chart->legend()->hide();      QValueAxis x_ax;     x_ax.setRange(0, sine.pointsVector().last().x());     x_ax.setTickCount(5);     x_ax.setLabelFormat(QString{"%."+QString::number((int)log10(div))+"f"});     chart->setAxisX(&x_ax, &sine);     chart->setAxisX(&x_ax, &point);      QValueAxis y_ax;     y_ax.setRange(-1, 1);     y_ax.setTickCount(5);     y_ax.setLabelFormat("%.3f");     chart->setAxisY(&y_ax, &sine);     chart->setAxisY(&y_ax, &point);      QFont font{chart->axisX()->labelsFont()};     font.setPixelSize(20);     chart->axisX()->setLabelsFont(font);     chart->axisY()->setLabelsFont(font);      view->setChart(chart);     view->setRenderHint(QPainter::Antialiasing);      QVBoxLayout * vl{new QVBoxLayout};     vl->addWidget(view);     vl->addWidget(sld);      QWidget w;     w.setLayout(vl);     w.show();      QObject::connect(sld, &QSlider::valueChanged,         [=,&sine,&point](int val){             QPointF p{val/div, sine.at(val).y()};             point.clear();             point.append(p);             chart->axisX()->setRange(p.x()-(100/div), p.x()+(100/div));             chart->axisY()->setRange(p.y()-(.1), p.y()+.1);             // in my misbehaving application i have to use update() and only             // then I do not get 'leftovers' after changing axis ranges             // view->scene()->update(view->rect());         }     );      return a.exec(); } 

very annoying

     
         
         

Lista de respuestas


Relacionados problema

2  ¿Cómo puedo agregar capacidad de envoltura a un qlegend?  ( How can i add wrap capability to a qlegend ) 
Después de agregar más de 3 artículos (como todos los ejemplos) a la Qlegend de QCHAT, la leyenda se hace superpuesta y el texto para cada elemento de la seri...

1  Cómo eliminar el espaciado entre ChartView y es PLUNTAREA en QML  ( How to remove spacing between chartview and its plotarea in qml ) 
1) Mi requisito es que PLANTAREA DE CULTWIEW EN QML debe adquirir todo el espacio. 2) No quiero espaciarse entre Chartview y Grids Plamara. 3) Para esto, hice...

0  QCHART se ralentiza en la aplicación QT  ( Qchart slows down in qt application ) 
Por lo tanto, estoy escribiendo una aplicación QT que leerá los valores de un puerto serie y mostrarlos en un gráfico durante el tiempo de ejecución. Me las a...

1  QCHART no muestra los datos de cualquier serie cuando use QDatetimeAxis  ( Qchart not displaying any series data when using qdatetimeaxis ) 
Quiero mostrar una parcela en tiempo real usando QChart y QLineSeries donde los valores X son marcas de tiempo. Todo funciona como se esperaba cuando uso ...

1  Actualización de QCHART desde Qlineseries en una carrera mientras hace un bucle  ( Updating qchart from qlineseries in a running while loop ) 
Quiero hacer que mi QChart se actualice dinámicamente cada vez que se agregue un punto al objeto Qlineseries adjunto a él, pero parece que esta actualización ...

3  Rendimiento en tiempo real de QCHART  ( Qchart realtime performance ) 
Estoy usando QCHART para una aplicación. La solicitud debe mostrar algunos datos en tiempo real. Habrá un gráfico y 24 series en la tabla. La tasa de dato...

1  ¿Cómo obtener valores de un gráfico?  ( How to get values from a chart ) 
Es fácil obtener las coordenadas del mouse en la aplicación - self.setMouseTracking(True) def mouseMoveEvent(self, event): mouse_x = event.x() ...

0  Cómo eliminar el color de fondo Q-gráfico y hacerlo transparente  ( How to remove the q chart background color and make it transparent ) 
Cómo eliminar el color de fondo (blanco) de la gráfico Q-gráfico y hacerlo transparente. Para que pueda maximizar el tamaño de la tabla sin cubrir otras et...

2  QT Inserte Widget dentro de un otro widget  ( Qt insert widget inside an other widget ) 
He creado una interfaz de usuario con QT Creator, en esta interfaz de usuario, solo hay un botón y un widget (Llamemos, respectivamente, Botón y Char_Containe...

0  QCharts - Crear un descanso (valor nulo) en Qlineseries  ( Qcharts create a break null value in qlineseries ) 
Actualmente estoy usando QLineSeries para representar una relación de temperatura a tiempo. Tengo un sensor de temperatura conectado. Envía datos cada min...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos