#include "widget.h"
#include "ui_widget.h"
// 定义Widget类,继承自QWidget,带有对应的UI界面布局
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget) // 初始化私有成员ui,指向从.ui文件生成的UI对象
{
// 设置UI界面布局到当前Widget
ui->setupUi(this);
// 设置第一个滑动条的最大值为Widget宽度减去100
ui->horizontalSlider->setMaximum(width() - 100);
// 设置第二个滑动条的最大值为360,代表旋转角度范围
ui->horizontalSlider_2->setMaximum(360);
// 设置第三个滑动条的最大值为3,用于缩放比例调整
ui->horizontalSlider_3->setMaximum(3);
// 设置第四个滑动条的最大值为100,并设置单步值为1,用于精细控制剪切/shear值
ui->horizontalSlider_4->setMaximum(100);
ui->horizontalSlider_4->setSingleStep(1);
}
// 析构函数,释放UI资源
Widget::~Widget()
{
delete ui;
}
// 重写QWidget的paintEvent函数,用于响应窗口重绘事件
void Widget::paintEvent(QPaintEvent *event)
{
// 创建一个QPainter对象,用于在当前Widget上进行绘图
QPainter painter(this);
// 设置画笔颜色为红色
QPen pen(QColor(Qt::red));
painter.setPen(pen);
// 设置填充刷颜色为白色
QBrush brush(QColor(Qt::white));
painter.setBrush(brush);
// 绘制一个占据Widget三分之二宽度和全部高度的矩形框
painter.drawRect(0, 0, width() * 2 / 3, height());
// 根据第一个滑动条的值进行平移
painter.translate(ui->horizontalSlider->value(), ui->horizontalSlider->value());
// 根据第二个滑动条的值进行旋转
painter.rotate(ui->horizontalSlider_2->value());
// 根据第三个滑动条的值进行缩放
painter.scale(static_cast<double>(ui->horizontalSlider_3->value()), static_cast<double>(ui->horizontalSlider_3->value()));
// 根据第四个滑动条的值进行剪切/shear变换
painter.shear(ui->horizontalSlider_4->value()/100.0,ui->horizontalSlider_4->value()/100.0);
// 在变换后坐标系下绘制一个固定大小(100x100)的矩形框
painter.drawRect(0, 0, 100, 100);
}
// 槽函数,当第一个滑动条移动时,调用update()使Widget重绘
void Widget::on_horizontalSlider_sliderMoved(int position)
{
update();
}
// 槽函数,当第二个滑动条移动时,调用update()使Widget重绘
void Widget::on_horizontalSlider_2_sliderMoved(int position)
{
update();
}
// 槽函数,当第三个滑动条移动时,调用update()使Widget重绘
void Widget::on_horizontalSlider_3_sliderMoved(int position)
{
update();
}
// 槽函数,当第四个滑动条移动时,调用update()使Widget重绘
void Widget::on_horizontalSlider_4_sliderMoved(int position)
{
update();
}
05-project
于 2024-04-19 09:28:47 首次发布