要制作一个可以缩放和绘制的画布QWidget,你可以使用Qt框架中的QPainter类进行绘制,并结合QWheelEvent实现缩放功能。以下是一个简单的示例代码:
#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QWheelEvent>
class Canvas : public QWidget {
public:
Canvas(QWidget *parent = nullptr) : QWidget(parent), scale(1.0) {}
protected:
void paintEvent(QPaintEvent *event) override {
QPainter painter(this);
painter.scale(scale, scale);
// 在这里添加绘制代码
painter.drawRect(10, 10, 100, 100);
}
void wheelEvent(QWheelEvent *event) override {
int delta = event->angleDelta().y();
if (delta > 0) {
scale *= 1.1;
} else {
scale /= 1.1;
}
update();
}
private:
double scale;
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
Canvas canvas;
canvas.show();
return app.exec();
}
QPainter::setRenderHint
设置高质量的渲染提示来解决。通过以上步骤和示例代码,你可以创建一个基本的可以缩放和绘制的画布QWidget。根据具体需求,你可以进一步扩展和优化这个基础框架。