QPolygon
Возникла небольшая проблемка. Уверен, что это решается довольно легко, но, всё же, никак не могу найти решение.
Хочу нарисовать что-нибудь при помощи полигонов, а для этого я вручную вбиваю координаты треугольников в форму, а понравившиеся сохраняю в лист. Штука в том, что когда я меняю в форме координаты треугольника, перерисовывается старый, а не создаётся новый, это, на самом деле, мне только на руку, но мне нужно знать, как сделать так, чтобы создавался новый. Потому что сейчас я понятия не имею, каким образом мне нужно писать отрисовку по координатам с листа.
void MainWindow::drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3, QPainter *painter, QPolygon *poly) { painter->setRenderHint(QPainter::Antialiasing, true); QPen pen(Qt::gray); painter->setPen(pen); *poly << QPoint(width() * x1 * 0.01, height() * y1 * 0.01); *poly << QPoint(width() * x2 * 0.01, height() * y2 * 0.01); *poly << QPoint(width() * x3 * 0.01, height() * y3 * 0.01); } void MainWindow::paintEvent(QPaintEvent *event) { QPainter painter(this); QPolygon poly; drawTriangle(ui->lineEdit_1->text().toInt(), ui->lineEdit_2->text().toInt(), ui->lineEdit_3->text().toInt(), ui->lineEdit_4->text().toInt(), ui->lineEdit_5->text().toInt(), ui->lineEdit_6->text().toInt(), &painter, &poly); painter.drawPolygon(poly); } void MainWindow::on__go_button_clicked() { this->update(); } void MainWindow::on__save_button_clicked() { int a[] = {ui->lineEdit_1->text().toInt(), ui->lineEdit_2->text().toInt(), ui->lineEdit_3->text().toInt(), ui->lineEdit_4->text().toInt(), ui->lineEdit_5->text().toInt(), ui->lineEdit_6->text().toInt()}; for (int i = 5; i >= 0; i--) list << a[i]; for (int i = 0; i < 6; i++) { ui->textEdit->setText(ui->textEdit->toPlainText() + QString::number(list.takeLast()) + "\n"); } }
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.Вам це подобається? Поділіться в соціальних мережах!
- Akiv Doros
- 11 листопада 2024 р. 14:58
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:50бали,
- Рейтинг балів-4
- molni99
- 26 жовтня 2024 р. 01:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80бали,
- Рейтинг балів4
- molni99
- 26 жовтня 2024 р. 01:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20бали,
- Рейтинг балів-10
Добрый день.
Вам для этого нужно использовать графическую сцену QGraphicsScene и добавлять на неё графические элементы QGaphicsItem - это будет наиболее правильным решение в вашем случае.
Там просто нужно будет наследоваться от QGraphicsItem и переопределить метод paint.
Вот несколько статей, где это подробно описывается
А в вашем случае вы просто переустанавливаете точки, которые при каждом обновлении окна отрисовываются снова, таким образом рисунок в окне перерисовывается. Но это не является самостоятельным объектом.