Pull to refresh

Построение графиков простейших функций в Qt

Эта статья о том, как можно научиться строить любые графики в среде QT 4.8.2 без всяких QWT- ов.
Задача: Построить график (прямую) по 4 точкам.
Как видите, график будет простейший.
Начнем.
1. Создадим проект QT 4.8.2 с ui файлом(GUI приложение QT).
2. Откроем редактор графического интерфейса.
2.1. Находим в toolbox-е элемент GraphicsView, и перетаскиваем его на форму.
2.2. Тоже самое с кнопкой PushButton.
2.3. А еще для ввода x и y нам потребуется четыре SpinBox.
Ну вот, основные приготовления закончены.
У вас должно получится примерно следующее:


Дальше начинается кодинг.
Нажимаем правой кнопкой мыши на PushButton и выбираем пункт перейти к слоту.
Вы увидите:

Дальше мы создадим сцену.

QGraphicsScene *scene = new QGraphicsScene(ui->graphicsView);
//Это как раз создана сцена. Сцена - это класс для работы с 2D графикой.
//Теперь, раз это график, то построим координатные оси X и Y.
QPen pen(Qt::green);//Просто выбираем цвет для карандашика
scene->addLine(0,90,180,90,pen);//x
scene->addLine(90,0,90,180,pen);//y


Итак, на этой стадии можно добавить в конец такую строку:
ui->graphicsView->setScene(scene);

и откомпилировать программу.
Должно получиться примерно следующее:

Это элемент нашего графика graphicsview.

По логике, надо дальше принять все 4 значения из наших Spinbox-ов.

Это мы и выполним:
a =ui->spinBox  ->value();
b =ui->spinBox_2->value();
c =ui->spinBox_3->value();
d =ui->spinBox_4->value();
//Забираем значения переменных из SpinBox-ов
QPen pen2(Qt::red);//Карандашик для графика
scene->addLine(a*15+90,90-b*15,c*15+90,90-d*15,pen2);
//(90;90) – точка пересечения осей. Значит, мы должны к x-ам прибавить x //центра, а из y вычесть значение Y центра. 15 – это количество пикселов в //0,5 мм. Это все требуется для наиболее точного расположения графика. 

ui->graphicsView->setScene(scene);//Добавляем в наш GraphicsView нарисованную сцену.

Результат:

Вот мы и научились строить простейшие графики в Qt Creator.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.