Как отобразить QtChartView в окне с другими виджетами? - PullRequest
1 голос
/ 10 апреля 2019

Я следовал следующему уроку на YouTube (успешно) https://www.youtube.com/watch?v=MHn3ZTWcyXk&t=13m33s. По сути, я пытаюсь сделать то же самое, что и в уроке, но на этот раз в большом окне, которое уже содержит кучу виджетов и прочее.,Я вызываю функцию ниже в конструкторе класса.Это, однако, не отображает данные в графическом представлении, которое является QChartView.

void RecordWidget::setupGraph(){

    QLineSeries *series = new QLineSeries();
    series->append(0, 16);
    series->append(1, 25);
    series->append(2, 24);
    series->append(3, 19);
    series->append(4, 33);
    series->append(5, 25);
    series->append(6, 34);

    // Create chart, add data, hide legend, and add axis
    QChart *chart = new QChart();
    chart->legend()->hide();
    chart->addSeries(series);
    chart->createDefaultAxes();

    // Customize the title font
    QFont font;
    font.setPixelSize(18);
    chart->setTitleFont(font);
    chart->setTitleBrush(QBrush(Qt::black));
    chart->setTitle("Barry Bonds HRs as Pirate");

    // Change the line color and weight
    QPen pen(QRgb(0x000000));
    pen.setWidth(5);
    series->setPen(pen);

    chart->setAnimationOptions(QChart::AllAnimations);

    // Change the x axis categories
    QCategoryAxis *axisX = new QCategoryAxis();
    axisX->append("1986",0);
    axisX->append("1987",1);
    axisX->append("1988",2);
    axisX->append("1989",3);
    axisX->append("1990",4);
    axisX->append("1991",5);
    axisX->append("1992",6);
    chart->setAxisX(axisX, series);

    // Used to display the chart
    QChartView *chartView = new QChartView(chart);
    chartView->setRenderHint(QPainter::Antialiasing);

    ui->graphView = chartView;
    ui->graphView->show();
    ui->graphView->setVisible(true);
}

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

ui->graphView уже в макете при назначении ui->graphView = chartView;.Вы просто меняете указатель.Вместо этого вы должны изначально создать ui->graphView как QChartView

0 голосов
/ 10 апреля 2019

Я бы попробовал:

ui->graphView->setChart(chart);

вместо

QChartView *chartView = new QChartView(chart);
ui->graphView = chartView;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...