非常抱歉,我的回答中似乎出现了错误。以下是一个修正过的示例代码,可以实现基本的白板绘图功能:
#include <QtWidgets>
class Whiteboard : public QWidget {
public:
Whiteboard(QWidget *parent = nullptr) : QWidget(parent), isDrawing(false) {
setAttribute(Qt::WA_StaticContents);
image = QImage(size(), QImage::Format_RGB32);
image.fill(Qt::white);
}
protected:
void paintEvent(QPaintEvent *event) override {
QPainter painter(this);
painter.drawImage(event->rect(), image, event->rect());
}
void mousePressEvent(QMouseEvent *event) override {
if (event->button() == Qt::LeftButton) {
lastPoint = event->pos();
isDrawing = true;
}
}
void mouseMoveEvent(QMouseEvent *event) override {
if ((event->buttons() & Qt::LeftButton) && isDrawing) {
drawLineTo(event->pos());
}
}
void mouseReleaseEvent(QMouseEvent *event) override {
if (event->button() == Qt::LeftButton && isDrawing) {
drawLineTo(event->pos());
isDrawing = false;
}
}
private:
void drawLineTo(const QPoint &endPoint) {
QPainter painter(&image);
painter.setPen(Qt::black);
painter.drawLine(lastPoint, endPoint);
update(); // 强制重绘
lastPoint = endPoint;
}
private:
QImage image;
QPoint lastPoint;
bool isDrawing;
};
int main(int argc, char **argv)
{
QApplication app(argc, argv);
Whiteboard whiteboard;
whiteboard.show();
return app.exec();
}
请尝试使用修正后的代码,它应该能够实现基本的白板绘图功能。如果还有其他问题,请随时提问。感谢理解!
内容由零声教学AI助手提供,问题来源于学员提问