非常抱歉给您带来困惑。关于画线的功能,可以使用 QPainter
类来实现。
在你的代码中,你可以添加一个成员变量 QPoint lastPoint
来记录上一个鼠标位置,然后在 mouseMoveEvent
函数中绘制线条。示例代码如下:
class WhiteBoard : public QWidget {
// ...
private:
bool drawing;
QPoint lastPoint;
protected:
void mousePressEvent(QMouseEvent* event) override {
if (event->button() == Qt::LeftButton) {
drawing = true;
lastPoint = event->pos();
}
QWidget::mousePressEvent(event);
}
void mouseMoveEvent(QMouseEvent* event) override {
if (drawing && (event->buttons() & Qt::LeftButton)) {
QPainter painter(this);
painter.setPen(Qt::black);
painter.drawLine(lastPoint, event->pos());
lastPoint = event->pos();
update(); // 刷新界面
}
QWidget::mouseMoveEvent(event);
}
void mouseReleaseEvent(QMouseEvent* event) override {
if (event->button() == Qt::LeftButton) {
drawing = false;
}
QWidget::mouseReleaseEvent(event);
}
};
这样,当你按下鼠标左键并移动时,就会在窗口上画出连续的线条。希望对你有所帮助!如果还有其他问题,请随时提问。
内容由零声教学AI助手提供,问题来源于学员提问