【问题标题】:Create multiple QwtPlotCurve dynamically动态创建多个 QwtPlotCurve
【发布时间】:2017-05-15 20:11:59
【问题描述】:

我有一个QStringList (m_NameList),其中包含 4 个元素。对于每个字符串,我创建一个QwtPlotCurve (QMap < QString, QwtPlotCurve*> m_NamePlotC;) 并为每个 plotCurve 设置不同的 Pen:

for(unsigned int i= 0; i< m_NameList.count(); ++i)
{
  QwtText title(m_NameList.at(i));
  title.setFont(fontNormal);

  m_NamePlotC[m_NameList.at(i)]= new QwtPlotCurve();
  m_NamePlotC[m_NameList.at(i)]->setTitle(title);

  if(i== 0)
  {
    m_NamePlotC[m_NameList.at(i)]->setPen(QPen(Qt::green, 1, Qt::DashLine));
  }
  else if(i== 1)
  {
    m_NamePlotC[m_NameList.at(i)]->setPen(QPen(Qt::blue, 1, Qt::DashLine));
  }
  else if(i== 2)
  {
    m_NamePlotC[m_NameList.at(i)]->setPen(QPen(Qt::cyan, 1, Qt::DashLine));
  }
  else if(i== 3)
  {
    m_NamePlotC[m_NameList.at(i)]->setPen(QPen(Qt::yellow, 1, Qt::DashLine));
  }

  m_NamePlotC[m_NameList.at(i)]->setRenderHint(QwtPlotItem::RenderAntialiased, true);
  m_NamePlotC[m_NameList.at(i)]->setCurveAttribute(QwtPlotCurve::Fitted);
}

我的问题是摆脱if-statements。有没有什么创造性的方法可以让我根据QStringList中每个元素的不同颜色的QStringList元素的数量动态设置笔,而不使用ifs?

谢谢!

【问题讨论】:

    标签: qt qwt


    【解决方案1】:

    似乎在每一行中,唯一改变的是颜色。您可以维护一个颜色列表,我们称之为coloursList,然后将ifs 替换为

    m_NamePlotC[m_NameList.at(i)]->setPen(QPen(coloursList[i], 1, Qt::DashLine));
    

    我不确定您使用的是哪种语言,所以我的索引语法可能有点偏离,但我希望逻辑清晰。

    【讨论】:

      【解决方案2】:

      我正在使用 C++。我按照你说的做了,效果很好:

      QStringList m_ColorList;
      m_ColorList<< "orange";
      m_ColorList<< "green";
      m_ColorList<< "cyan";
      m_ColorList<< "yellow";
      m_ColorList<< "magenta";
      m_ColorList<< "blue";
      m_ColorList<< "white";
      m_ColorList<< "gray";
      m_ColorList<< "red";
      
      m_NamePlotC[m_NameList.at(i)]->setPen(QPen(QColor(m_ColorList[i]), 1, Qt::DashLine));
      

      【讨论】:

        猜你喜欢
        • 2011-05-24
        • 1970-01-01
        • 1970-01-01
        • 2018-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多