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"); } }
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.Do you like it? Share on social networks!
- Akiv Doros
- Nov. 11, 2024, 2:58 p.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:50points,
- Rating points-4
- molni99
- Oct. 26, 2024, 1:37 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:80points,
- Rating points4
- molni99
- Oct. 26, 2024, 1:29 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:20points,
- Rating points-10
Добрый день.
Вам для этого нужно использовать графическую сцену QGraphicsScene и добавлять на неё графические элементы QGaphicsItem - это будет наиболее правильным решение в вашем случае.
Там просто нужно будет наследоваться от QGraphicsItem и переопределить метод paint.
Вот несколько статей, где это подробно описывается
А в вашем случае вы просто переустанавливаете точки, которые при каждом обновлении окна отрисовываются снова, таким образом рисунок в окне перерисовывается. Но это не является самостоятельным объектом.