2017-05-15 7 views
0

나는 요소가 4 개 들어있는 QStringList (m_NameList)이 있습니다. 각 문자열, 나는 각 plotCurve에 대한 QwtPlotCurve (QMap < QString, QwtPlotCurve*> m_NamePlotC;) 설정하고 다른 펜을 만들 :동적으로 여러 개의 QwtPlotCurve 만들기

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에있는 각 요소의 색이 다른 요소를 기반으로 펜을 동적으로 설정하는 창의적인 방법이 있나요? if을 사용하지 않고 있습니까?

감사합니다.

답변

1

각 줄마다 색상이 변경된 것 같습니다. 당신의 난 당신이 사용하는, 그래서 내 색인 구문이 약간 떨어져있을 수있는 언어 모르겠어요

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

하여 if의 교체 후 coloursList 그것을 호출하자, 색상의 목록을 유지할 수 있습니다,하지만 난 희망 그 논리는 분명합니다.

0

저는 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)); 
+1

답변으로 "감사합니다"를 추가하지 마십시오. 대신 ** 가장 도움이되는 ** [답변 수락] (https://stackoverflow.com/help/accepted-answer) **. - [리뷰 작성] (리뷰/리뷰/저품각/17147318) – rafalmp