Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Chinese
  4. QChart中QScatterSeries的点击信号触发后,执行槽函数后出现空指针异常,异常位置在源码scatterchartitem类中的setMousePressed()方法

QChart中QScatterSeries的点击信号触发后,执行槽函数后出现空指针异常,异常位置在源码scatterchartitem类中的setMousePressed()方法

Scheduled Pinned Locked Moved Unsolved Chinese
2 Posts 1 Posters 2.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Offline
    R Offline
    Rokkie
    wrote on last edited by
    #1

    0_1521180586786_捕获.PNG

    1 Reply Last reply
    0
    • R Offline
      R Offline
      Rokkie
      wrote on last edited by
      #2

      信号与槽的连接

      for(int i = 0; i < charts_list_->count(); i++){
              connect(charts_list_->at(i)->series2_,SIGNAL(clicked(QPointF)),this,SLOT(series2HandleClickedPoint(QPointF)));
      }
      

      槽函数

      void View::series2HandleClickedPoint(const QPointF &point){
          PulseGraphOperator::UnSelectPointInAllCharts(charts_list_, point.x());
      }
      

      UnSelectPointInAllCharts()方法是为了多个图同步进行反选

      void PulseGraphOperator::UnSelectPointInAllCharts(QList<Chart *> *list, qreal xpos){
          for(int i = 0; i < list->count(); i++){
              PulseGraphOperator::UnSelectPoint(list->at(i), xpos);
          }
      }
      

      UnSelectPoint()方法实现反选,将反选的点从已选中序列series2中移除,添加到原序列series1

      void PulseGraphOperator::UnSelectPoint(Chart* chart, qreal xpos){
          QPointF clicked_point;
          if(chart->series2_->points().size() > 1){
              foreach(QPointF series2_point, chart->series2_->points()){
                  if(series2_point.x() == xpos){
                      clicked_point = series2_point;
                      break;
                  }
              }
              chart->series1_->append(clicked_point);
              chart->series2_->remove(clicked_point);
              qDebug()<<"series2.point > 1";
          }else{
              chart->series1_->append(chart->series2_->points());
              chart->series2_->clear();
              qDebug()<<"series2.point = 1";
          }
          qDebug()<<"UnSelect point";
      }
      

      无奈出现空指针异常,读取或者访问冲突,不知道问题出在哪里?

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved