qt绘图板如何实现颜色填充给个代码示例
时间: 2024-03-23 12:44:06 浏览: 107
qt画图板的实现
4星 · 用户满意度95%
以下是一个简单的 Qt 绘图板示例,演示了如何使用颜色填充:
```cpp
#include <QtWidgets>
class DrawingWidget : public QWidget
{
public:
DrawingWidget(QWidget *parent = nullptr);
protected:
void paintEvent(QPaintEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
private:
QPointF m_lastPoint;
QColor m_currentColor;
QImage m_image;
};
DrawingWidget::DrawingWidget(QWidget *parent)
: QWidget(parent)
, m_currentColor(Qt::black)
, m_image(400, 400, QImage::Format_RGB32)
{
m_image.fill(Qt::white);
}
void DrawingWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawImage(0, 0, m_image);
}
void DrawingWidget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
m_lastPoint = event->pos();
QPainter painter(&m_image);
painter.setPen(m_currentColor);
painter.drawPoint(m_lastPoint);
update();
} else if (event->button() == Qt::RightButton) {
QColor fillColor = QColorDialog::getColor(m_currentColor, this, "Choose Fill Color");
if (fillColor.isValid()) {
QPainter painter(&m_image);
painter.setPen(fillColor);
painter.setBrush(fillColor);
painter.fillRect(m_image.rect(), fillColor);
update();
}
}
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
DrawingWidget widget;
widget.show();
return app.exec();
}
```
在这个示例中,我们在 `DrawingWidget` 类中实现了绘图功能。我们在 `paintEvent` 函数中绘制了一个 `QImage` 对象,它保存了我们绘制的内容。我们使用 `mousePressEvent` 函数来响应鼠标事件,根据鼠标按键的不同,我们可以选择在画布上绘制点或者填充颜色。
在右键点击画布时,我们使用 `QColorDialog::getColor` 函数来让用户选择填充颜色。然后我们使用 `QPainter` 对象的 `fillRect` 函数来填充整个画布。注意,我们同时设置了画笔和画刷的颜色,这样可以保证填充的颜色和边框颜色一致。
在 `DrawingWidget` 的构造函数中,我们初始化了一个 400x400 的白色 `QImage` 对象,作为我们的画布。在 `mousePressEvent` 函数中,我们使用了 `QPainter` 对象来绘制点和填充颜色。最后,我们在 `paintEvent` 函数中将 `QImage` 对象绘制到屏幕上。
这是一个非常简单的示例,你可以根据自己的需要进行扩展,例如添加更多的绘图工具、支持多种颜色、保存/加载绘图等等。
阅读全文