我要用qt制作画图板 以下是关于其中铅笔的操作 void Pen::paint(QPainter &paint) { paint.setPen(QPen(color, width)); paint.setBrush(Qt::white); paint.drawLine(start, end); } if (shapeType == type_Pen) { Shape *zero = new Pen; zero->set_start(QPoint(0, 0)); zero->set_end(QPoint(0, 0)); stack.push(zero); }//Pen 制造间隔点 void Shape::set_pos(QPoint p1, QPoint p2, bool is_straight) { start = p1; int dis; if (is_straight) { if (abs(p1.rx() - p2.rx()) < abs(p1.ry() - p2.ry())) dis = abs(p1.rx() - p2.rx()); else dis = abs(p1.ry() - p2.ry()); if (p1.rx() - p2.rx() > 0) p2.setX(p1.rx() - dis); else p2.setX(p1.rx() + dis); if(p1.ry() - p2.ry() > 0) p2.setY(p1.ry() - dis); else p2.setY(p1.ry() + dis); } end = p2; } QPoint Shape::get_end() { return end; } QPoint Shape::get_start() { return start; } QColor Shape::get_color() { return color; } QColor Shape::get_brush() { return brush; } int Shape::get_width() { return width; } void Shape::set(QColor c1, QColor c2, int w) { color = c1; brush = c2; width = w; } 错哪了
时间: 2024-04-19 12:30:06 浏览: 10
根据您提供的代码,目前我没有看到明显的错误。但是,根据代码片段的上下文,可能存在以下问题:
1. 您是否在其他地方定义了 `type_Pen`?如果没有定义,那么在 `shapeType == type_Pen` 的条件语句中将无法正常工作。
2. 在 `Shape` 类中没有找到 `set_start` 和 `set_end` 函数的实现。这可能会导致在运行时出现错误。
请确保您的代码中没有其他问题,并提供更多上下文信息以便更好地理解和排除错误。
相关问题
void pencil::paint(QPainter &painter) { painter.setPen(QPen(color,width)); painter.setBrush(brush); painter.drawLine(start,end); start=end; }我该怎么实现铅笔绘画呢
你的 `pencil::paint()` 函数看起来已经实现了铅笔的绘画功能。在这个函数中,你使用了传入的 `QPainter` 对象来设置画笔的颜色和宽度,并使用 `setBrush()` 设置画刷。然后,使用 `drawLine()` 方法绘制线条,并更新起点为当前的终点。
要使用这个函数进行铅笔绘画,你需要在你的代码中创建一个 `QPainter` 对象,并将其传递给 `pencil::paint()` 函数。你可以在绘图事件或者其他需要绘制的地方调用这个函数。
以下是一个简单的示例,展示如何在 `QWidget` 的绘图事件中使用铅笔绘画:
```cpp
void MyWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
pencil myPencil; // 创建一个铅笔对象
myPencil.paint(painter); // 使用铅笔进行绘画
}
```
请注意,这只是一个简单示例,实际上你可能需要在更复杂的绘图场景中使用更多的代码来处理绘制逻辑、坐标计算和用户交互等。
void pencil::paint(QPainter &painter) { painter.setPen(QPen(color,width)); painter.setBrush(brush); painter.drawLine(start,end); start=end; }并没有成功实现我想要的铅笔绘画功能,他画出一段的同时将上一段删掉了,这样屏幕上永远只会出现一条短线
我很抱歉,我之前的回答有误。要实现铅笔绘画功能,你需要在每次绘制线条时,将当前线条的终点作为下一条线条的起点。这样,就可以绘制多个线条而不会删除之前的线条。
下面是修改后的示例代码:
```cpp
void pencil::paint(QPainter &painter)
{
painter.setPen(QPen(color, width));
painter.setBrush(brush);
painter.drawLine(start, end);
start = end; // 将当前线条的终点作为下一条线条的起点
}
```
确保在每次调用 `paint()` 函数之前,更新 `end` 变量的值,以便绘制新的线条。
另外,你还需要在你的代码中创建一个 `QPainter` 对象,并将其传递给 `pencil::paint()` 函数,以便在适当的时间绘制线条。
请注意,这只是一个简单示例,实际上你可能需要在更复杂的绘图场景中使用更多的代码来处理绘制逻辑、坐标计算和用户交互等。