以下是一个使用Qt C++编写的简单白板软件的示例代码:
#include <QtWidgets>
class Whiteboard : public QWidget {
public:
Whiteboard(QWidget *parent = nullptr) : QWidget(parent), isDrawing(false) {
setAttribute(Qt::WA_StaticContents);
}
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();
}
这个示例创建了一个名为Whiteboard
的自定义窗口部件,用于显示绘图区域。它通过捕获鼠标事件来实现绘图功能,并使用QPainter
进行绘制操作。当鼠标按下并移动时,它将在画布上绘制一条线。
你可以将此代码保存为单独的.cpp文件,并使用Qt Creator或其他适用的方式进行编译和运行。这只是一个简单的示例,你可以根据需要扩展和修改它以满足特定的需求。希望对你有所帮助!
内容由零声教学AI助手提供,问题来源于学员提问