#c #qt #qchart
#c #qt #qchart
Вопрос:
У меня есть приложение QT, и в моем окне у меня есть графики, и количество графиков зависит от выбора пользователя, поэтому я использую массив указателей для их создания. Моя проблема заключается в том, что когда я пытаюсь добавить объект QLineSeries на свой QChart (который уже имеет QScatterSeries), строка добавляется только на последнем графике. Вот пример моего кода :
graph.h
QChart *chartArr[chartLimit];
QLineSeries *lineArr[lineLimit];
QPushButton *nextButton;
public slots:
onnextButtonClicked();
graph.cpp
GraphDialog::GraphDialog(QWidget *parent, Form *formPtr) :
QDialog(parent),
ui(new Ui::GraphDialog)
{
...
this->nextbutton = new QPushButton(buttonFrame);
connect(this->nextbutton,SIGNAL(clicked()),this,SLOT(onnextButtonClicked()));
...
}
void Graph::createLine(QString selected_item)
{
if(selected_item == "300") //seleted_item is the item what user choose on comboBox object
{
this->lineArr[0] = new QLineSeries();
this->lineArr[0]->setName("300-350gr");
this->lineArr[0]->append(QPoint(this->dy,this->y_max)); //variables that app calculated on previous functions. On debug mode this varibales seen calculated succesfully.
this->lineArr[0]->append(QPoint(this->dy,0));
}
}
void Graph::fillCharts(int index,QString selected_item)
{
if(selected_item == "300")
{
this->chartArr[index]->addSeries(this->lineArr[0]);
this->chartArr[index]->createDefaultAxes();
}
}
void Graph::onnextButtonClicked(){
QString selected_item = this->comboBox->currentText();
if(selected_item == "300"){
this->createLine("300");
for(int i = 0 ;i<this->chartIndexList.count();i ){ //this list holds my chart indexes and when I debug I could see list filled succesfully
if(this->chartIndexList.at(i) != 0){
this->fillCharts(this->chartIndexList.at(i),"300");
}
}
}
}
как вы можете видеть, имя моей QLine добавлено к моей первой qchart, но точки не видны. Как я могу решить эту проблему?
Комментарии:
1. Вы неправильно использовали = . if(selected_item = «300») — вставить selected_item = «300». Используйте if(selected_item == «300»)…
2. @Samuel D. Murphy извините за непонимание, мой исходный код намного длиннее, чем этот, пока я пытался обобщить его здесь, я написал это неправильно. Исходный код имеет selected_item == «300», и проблема существует.
3. Предположение: есть ли проблема в этом-> lineArr[0] = new QLineSeries()? Попробуйте …= новые QLineseries(это);
4. @Samuel D.Murphy если есть проблема с инициализацией QLineSeries, почему он может успешно добавить его в последнюю диаграмму? Есть ли альтернативный способ создать несколько объектов и достичь их таким образом?
5. В диаграммах заполнения этой функции this->chartArr[index]->addSeries(this->lineArr[0]); это нормально? Пожалуйста, проверьте …-> addSeries(this-> lineArr[0] или lineArr[index]