Как сделать графики через checkbox на QT?
Всем доброго времени суток. Читаются данные из txt файла и передаются в QPointF, в итоге рисуется график. В дальнейшем я буду читать файл с более массивным количеством данных, суммарно должно получиться 8 графиков, + пытаюсь добавить возможность скрывать показывать эти графики через checkbox. Если я нарисую 2 графика к примеру, то он соединит их точки вместе.
- как сделать так, чтобы такого не происходило ?
- Я знаю что checkbox пускает сигнал каждый раз, когда его состояние меняется, но не очень понимаю, как подключиться к сигналу и что нужно прописать, чтобы например при постановке галочки график был, а при её снятии он исчезал.
- как сделать так, чтобы эти 8 графиков располагались один под другим ?
Вот мой код
QStringList strList;
QLineSeries *series;
QValueAxis *axisX;
QValueAxis *axisY;
int seed = 0;
float a, b;
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
series= new QLineSeries();
// Тут я создаю полотно для графика и координатную ось
Chart *chart = new Chart();
chart->addSeries(series);
chart->setTitle("Graphic");
chart->setAnimationOptions(QChart::SeriesAnimations);
chart->legend()->hide();
axisX = new QValueAxis();
axisX->setTitleText("x, м");
axisX-> setRange( 0 , 20);
axisX->setLabelFormat("%g");
axisX->setTickCount(40);
chart->addAxis(axisX, Qt::AlignBottom);
series->attachAxis(axisX);
axisY = new QValueAxis();
axisY-> setRange( -1100 , 1100 );
axisY->setTitleText("t, мс");
axisY->setLabelFormat("%g");
axisY->setTickCount(10);
chart->addAxis(axisY, Qt::AlignLeft );
series->attachAxis(axisY);
ChartView *chartView = new ChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
ui->horizontalLayout->addWidget(chartView);
}
// кнопка для открытия файла, которая выводит данные сразу на график
void MainWindow::on_action_triggered()
{
QFile file;
QString f = QFileDialog::getOpenFileName(this, QString("Выибрите документ"),QDir::currentPath() ,"*.txt");
file.setFileName(f);
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
while(!file.atEnd() )
{
strList << file.readLine();
auto list1 = strList[0].split(" ");
a = QString(list1[0]).toFloat();
b = QString(list1[1]).toFloat();
*series << QPointF( a, b );
strList.clear();
}
file.close();
}
}