【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.3 初始化数据
创始人
2024-03-28 12:07:08
0

本节对应的视频讲解:B_站_视_频

https://www.bilibili.com/video/BV1qd4y1s7xk


布局完成后,就可以修改控件的名称,以及添加初始化数据

1. 变量命名

先修改各控件显示的的名称,做到 “见名知义”,方便写代码

修改完控件名称后的效果如下:

image-20221206125232160


2. 初始化数据

为各个控件添加 初始化数据


2.1 形状

为 cboShape 控件,添加形状

首先,在 paintwidget.h 中定义一个枚举类型,表示形状的类型,如下:

enum Shape {_Point,         //_Line,          //_Rect,          //_RoundedRect,   //_Ellipse,       //_Polyline,      //_Polygon,       //_Arc,           //_Pie,           //_Chord,         //_Path,          //_Text,          //_Pixmap
};

然后,在 widget.cpp 的构造中,添加如下初始化代码:

Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 1. 形状ui->cboShape->addItem("Point", static_cast(_Point));ui->cboShape->addItem("Line", static_cast(_Line));ui->cboShape->addItem("Rectangle", static_cast(_Rect));ui->cboShape->addItem("Rounded Rectangle", static_cast(_RoundedRect));ui->cboShape->addItem("Ellipse", static_cast(_Ellipse));ui->cboShape->addItem("Arc", static_cast(_Arc));ui->cboShape->addItem("Pie", static_cast(_Pie));ui->cboShape->addItem("Chord", static_cast(_Chord));ui->cboShape->addItem("Polyline", static_cast(_Polyline));ui->cboShape->addItem("Polygon", static_cast(_Polygon));ui->cboShape->addItem("Path", static_cast(_Path));ui->cboShape->addItem("Text", static_cast(_Text));ui->cboShape->addItem("Pixmap", static_cast(_Pixmap));
}

2.2 画笔

初始化画笔的属性

Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 2. 线宽ui->sbPenWidth->setRange(1, 10);// 3. 线型// 3.1 线型-实线、虚线、点画线等ui->cboPenStyle->addItem("Solid", static_cast(Qt::SolidLine));ui->cboPenStyle->addItem("Dash", static_cast(Qt::DashLine));ui->cboPenStyle->addItem("Dot", static_cast(Qt::DotLine));ui->cboPenStyle->addItem("Dash Dot", static_cast(Qt::DashDotLine));ui->cboPenStyle->addItem("Dash Dot Dot", static_cast(Qt::DashDotDotLine));ui->cboPenStyle->addItem("None", static_cast(Qt::NoPen));// 3.2 线型-线的端点的样式ui->cboPenCap->addItem("Flat", static_cast(Qt::FlatCap));ui->cboPenCap->addItem("Square", static_cast(Qt::SquareCap));ui->cboPenCap->addItem("Round", static_cast(Qt::RoundCap));// 3.3 连接-两根线的连接处的样式ui->cboPenJoin->addItem("Miter", static_cast(Qt::MiterJoin));ui->cboPenJoin->addItem("Bevel", static_cast(Qt::BevelJoin));ui->cboPenJoin->addItem("Round", static_cast(Qt::RoundJoin));
}

2.3 画刷

初始化画刷的属性

Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 4. 画刷ui->cboBrushStyle->addItem(tr("Linear Gradient"), static_cast(Qt::LinearGradientPattern));ui->cboBrushStyle->addItem(tr("Radial Gradient"), static_cast(Qt::RadialGradientPattern));ui->cboBrushStyle->addItem(tr("Conical Gradient"), static_cast(Qt::ConicalGradientPattern));ui->cboBrushStyle->addItem(tr("Texture"), static_cast(Qt::TexturePattern));ui->cboBrushStyle->addItem(tr("Solid"), static_cast(Qt::SolidPattern));ui->cboBrushStyle->addItem(tr("Horizontal"), static_cast(Qt::HorPattern));ui->cboBrushStyle->addItem(tr("Vertical"), static_cast(Qt::VerPattern));ui->cboBrushStyle->addItem(tr("Cross"), static_cast(Qt::CrossPattern));ui->cboBrushStyle->addItem(tr("Backward Diagonal"), static_cast(Qt::BDiagPattern));ui->cboBrushStyle->addItem(tr("Forward Diagonal"), static_cast(Qt::FDiagPattern));ui->cboBrushStyle->addItem(tr("Diagonal Cross"), static_cast(Qt::DiagCrossPattern));ui->cboBrushStyle->addItem(tr("Dense 1"), static_cast(Qt::Dense1Pattern));ui->cboBrushStyle->addItem(tr("Dense 2"), static_cast(Qt::Dense2Pattern));ui->cboBrushStyle->addItem(tr("Dense 3"), static_cast(Qt::Dense3Pattern));ui->cboBrushStyle->addItem(tr("Dense 4"), static_cast(Qt::Dense4Pattern));ui->cboBrushStyle->addItem(tr("Dense 5"), static_cast(Qt::Dense5Pattern));ui->cboBrushStyle->addItem(tr("Dense 6"), static_cast(Qt::Dense6Pattern));ui->cboBrushStyle->addItem(tr("Dense 7"), static_cast(Qt::Dense7Pattern));ui->cboBrushStyle->addItem(tr("None"), static_cast(Qt::NoBrush));
}

经过以上的初始化操作,效果如下:

效果


3. 添加资源文件

由于后边有绘制图片,以及将图片作为画刷的填充,因此这里先把图片作为资源添加到工程中来

首先,将包含两种图片文件 brick.png 和 qt-logo.png 的 images 文件夹,拷贝到项目目录下

然后,在项目名称右键,选择 “添加新文件…”,创建一个 painter.qrc 的资源文件:

image-20221207110044703

添加之后的效果,如下:

资源文件效果

添加完毕之后,就可以直接在代码中引用这两个图片了!

相关内容

热门资讯

父子交易、六次延期、2亿诉讼,... 文 | 预见能源 福达合金对光达电子3.5亿元的现金收购计划,在推进五个月后于2025年12月16...
“男子充25年爱奇艺会员欲退费... 近日,河南男子在爱奇艺平台充了25年会员遇退费难一事引发关注。 12月28日上午,爱奇艺官方回应称,...
欣旺达子公司诉讼案引关注:动力... 12月26日欣旺达(300207)公告,其全资子公司欣旺达动力科技股份有限公司(简称“欣旺达动力”)...
石景山一住户养上百只猫引众怒,... 北京石景山区一住户在家里养了上百只流浪猫,影响了小区100多户居民正常生活,引发群体性排除妨害纠纷。...
思维导图(231):从世其律师... 2025年12月16日,微信公众号“世间其旅”发布了一篇题为《陈律师,对不起,我们实在无法与您为伍!...
分手后“60后”男子起诉“90... 日前,重庆市云阳县人民法院公开了一份刑事附带民事判决书。重庆“60后”男子陈某某在分手后,以赠与合同...
今年我国积极财政政策打出“组合... 12月27日至28日,全国财政工作会议在北京召开。记者从会议上了解到,2025年,我国积极财政政策打...
福州4A景区“瓷天下”停业后续... 2024年6月,红星新闻曾报道福州市闽清县4A级景区“瓷天下”关门停业一事。(此前报道:)彼时,景区...
2026年我国将继续实施更加积... 12月27日至28日,全国财政工作会议在北京召开。2026年是我国连续第二年实施更加积极的财政政策。...
中国财长介绍“更加积极的财政政... 中新社北京12月28日电 (记者 赵建华)2026年中国继续实施更加积极的财政政策,保持必要的财政赤...