QT中用QPainter画一个圆跟一个矩形,然后通过鼠标点击进行来回切换
时间: 2023-07-18 13:42:14 浏览: 98
好的,我可以为您提供一个简单的示例代码:
```cpp
#include <QtWidgets>
class MyWidget : public QWidget {
public:
MyWidget(QWidget *parent = nullptr) : QWidget(parent) {
setFixedSize(300, 300);
m_shape = 0;
}
protected:
void paintEvent(QPaintEvent *event) override {
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setBrush(Qt::yellow);
painter.setPen(Qt::black);
if (m_shape == 0) {
painter.drawEllipse(50, 50, 200, 200);
} else {
painter.drawRect(50, 50, 200, 200);
}
}
void mousePressEvent(QMouseEvent *event) override {
if (event->button() == Qt::LeftButton) {
m_shape = (m_shape + 1) % 2;
update();
}
}
private:
int m_shape;
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MyWidget widget;
widget.show();
return app.exec();
}
```
在这个示例中,我们定义了一个 `MyWidget` 类来绘制圆和矩形,并且通过鼠标点击事件来进行切换。在 `paintEvent` 函数中,我们使用 `QPainter` 类来绘制圆或矩形,具体是哪个形状由变量 `m_shape` 控制。在 `mousePressEvent` 函数中,我们检测鼠标左键点击事件,并且切换到下一个形状,然后调用 `update` 函数来触发窗口的重新绘制。最后,在 `main` 函数中,我们创建了一个 `MyWidget` 对象,并显示它。
希望这个示例能够帮助到您!
阅读全文