Я хочу вывести График, после нажатой кнопки. Но у меня окошко появляется и сразу исчезает.
ksp_ecology.cpp:
...
void ksp_ecology::on_pushButton_clicked()
{
//![1]
QLineSeries *series = new QLineSeries();
//![1]
//![2]
series->append(0, 6);
series->append(2, 4);
series->append(3, 8);
series->append(7, 4);
series->append(10, 5);
*series << QPointF(11, 1) << QPointF(13, 3) << QPointF(17, 6) << QPointF(18, 3) << QPointF(20, 2);
//![2]
//![3]
QChart *chart = new QChart();
chart->legend()->hide();
chart->addSeries(series);
chart->createDefaultAxes();
chart->setTitle("Simple line chart example");
//![3]
//![4]
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
//![4]
//![5]
QMainWindow window;
window.setCentralWidget(chartView);
window.resize(400, 300);
window.show();
//![5]
}
...
Нельзя создать в функциях на стеке (QMainWindow window;
) виджеты, которые после создания будут отображены.
Есть два способа выделять память: на стеке (ваш вариант) и в куче (через оператор new).
В функции вы создаете на стеке виджет и отображаете его, тут же функция завершает работу и ее стек чистится, а вместе со стеком и удаляется виджет.
Решения проблемы:
Самое простое. У вас класс, а значит, можно вынести переменную из функции в поля класса.
ksp_ecology.h:
class ksp_ecology : public QWidget {
...
private:
QMainWindow window;
...
}
//![5]
QMainWindow* window = new QMainWindow();
window->setCentralWidget(chartView);
window->resize(400, 300);
window->show();
//![5]
Виртуальный выделенный сервер (VDS) становится отличным выбором
Недавно решил перейти к изучению С++ и QT (до этого изучал Си) и хотел прояснить несколько вещей для себяПрошу не ругать меня строго, так как...
Помогите, пожалуйста, решить задачу по программированию в с++Разбить элементы массива на группы по 4
Неправильно сравнивает 2 массива, вместо false(-) выдает true(+)В чем проблема? (Функция помечена комментарием)