QT折线图中x轴坐标不正确/自动调整

3

我正在使用QT 5.7创建一个简单的折线图。

以下是我的certificate_page_childs表结构:

enter image description here

我的C++代码:

QLineSeries *series = new QLineSeries();
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
QString db_path = QDir::currentPath();
db_path =  db_path + QString("/some_file");
db.setDatabaseName(db_path);
db.open();
QSqlQuery query;
 query.prepare("SELECT hardness_val FROM certificate_page_childs where cp_id=:value");
 query.bindValue(0,statisticalanalysis::cert_id_gbl);
 if(query.exec()){
      int d = 1;
      while (query.next()) {
          series->append(d, query.value(0).toDouble()); //Method 1
          //qDebug() << query.value(0).toString();
          //*series << QPointF(d,query.value(0).toDouble()); // Method 2
          qDebug() << d;
          d++;

      }
 }
 else
 {
     qDebug() << query.lastError();
 }
 db.close();
 QChart *chart = new QChart();
 chart->legend()->hide();
 chart->addSeries(series);
 chart->createDefaultAxes();
 chart->setTitle("Simple line chart example");
 chart->setAnimationOptions(QChart::SeriesAnimations);
 ui->graphicsView->setRenderHint(QPainter::Antialiasing);
 ui->graphicsView->setChart(chart);

以下是我的输出:

输入图像描述

我需要的是:

输入图像描述

X轴:读数数量
Y轴:每个读数的某些值
请将x轴与输出图片和所需的图片进行比较。
有人能指导我实现所需的结果吗?

@eyllanesc请查看输出图像,x轴上的坐标为(1.0,2.3,3.5,4.8,6.0),而我想要的坐标是(1,2,3,4,5,6)。 - Vikrant
@eyllanesc 对不起,我没有清楚地表达我的问题。请检查我的代码,变量d在while循环中增加1。所以我的x应该是(1,2,3,4,5,6),但运行该代码后x轴上的输出是(1.0, 2.3, 3.5, 4.8, 6.0)。如何解决这个问题? - Vikrant
@acraig5075,请将此问题中的重复标记移除,因为它不是关于标签的,而是关于将x轴坐标从小数转换为整数的问题。 - Vikrant
@Vikrant 当然,没问题。但是您是否注意到这两个最明显不同的标签图像,让人感觉这就是您的问题?一个好的修改方法是替换您的第二张图片。 - acraig5075
1
@acraig5075 谢谢。我已经相应地更新了我的问题。 - Vikrant
显示剩余7条评论
1个回答

0
在这种情况下,作为X轴,您有1:1:n的值,您可以设置tickCountlabelFormat
QChart *chart = new QChart();
chart->legend()->hide();
chart->addSeries(series);
chart->createDefaultAxes();
chart->setTitle("Simple line chart example");
chart->setAnimationOptions(QChart::SeriesAnimations);
ui->graphicsView->setRenderHint(QPainter::Antialiasing);
ui->graphicsView->setChart(chart);
QValueAxis *axisX = static_cast<QValueAxis *>(chart->axisX(series)); // <--
axisX->setTickCount(series->count());  // <--
axisX->setLabelFormat("%d"); // <--

太好了。这清楚地表明了我研究不足。无论如何,谢谢伙计。 - Vikrant
啊...最后一个问题,这个问题能否从重复类别中删除,因为它与打印标签无关?这可能吗?[对于打印标签的混淆感到抱歉] - Vikrant
@Vikrant 是唯一能够删除重复项的人,因为他标记了它。 - eyllanesc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接