Qt第十六天 待我称王封你为后i 2022-04-08 13:24 235阅读 0赞 ## QPainter基本绘图 ## **只有最基本的画图** **widget.h** #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include<QPainter> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT protected: void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;//Q_DECL_OVERRIDE表示重载 public: explicit Widget(QWidget *parent = nullptr); ~Widget(); private: Ui::Widget *ui; }; #endif // WIDGET_H **widget.cpp** #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); setPalette(QPalette(Qt::white));//设置背景为白色 setAutoFillBackground(true); } Widget::~Widget() { delete ui; } void Widget::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing|QPainter::TextAntialiasing);//反锯齿,文字反锯齿 int W=this->width(); int H=this->height(); /* //设置区域 QRect rect1(0,0,W/4,H/4); //设置画笔 QPen pen; pen.setWidth(2);//设置线宽 pen.setColor(Qt::black);//线色 pen.setStyle(Qt::SolidLine);//实线线形 pen.setCapStyle(Qt::FlatCap);//端点样式 pen.setJoinStyle(Qt::MiterJoin);//连接样式 painter.setPen(pen); //设置画刷1 QBrush brush1; brush1.setColor(Qt::green);//颜色 brush1.setStyle(Qt::HorPattern);//样式 //QPixmap texturePixmap(":images/images/texture2.jpg"); //brush.setStyle(Qt::TexturePattern);//材质填充 //brush.setTexture(texturePixmap); painter.setBrush(brush1); //绘图 painter.drawRect(rect1); */ //渐变效果 //辐射渐变 /* QRadialGradient radiaGrad(W/2,H/2,qMax(W/16,H/16),W/2,H/2);//辐射填充中心(W/2,H/2),辐射填充半径qMax(W/8,H/8),焦点坐标(W/2,H/2) radiaGrad.setColorAt(0,Qt::black);//0是起点 radiaGrad.setColorAt(1,Qt::white);//1是终点 radiaGrad.setSpread(QGradient::ReflectSpread); painter.setBrush(radiaGrad); painter.drawRect(this->rect());//填充更大的区域 */ //线形渐变 /* QLinearGradient linearGrad(rect().left(),rect().top()/2,rect().right(),rect().top()/2);// linearGrad.setColorAt(0,Qt::black); linearGrad.setColorAt(0.5,Qt::blue); linearGrad.setColorAt(1,Qt::white); painter.setBrush(linearGrad); painter.drawRect(this->rect()); */ //圆锥渐变 /* QConicalGradient conicalGrad(W/2,H/2,0); conicalGrad.setColorAt(0,Qt::black); conicalGrad.setColorAt(0.2,Qt::blue); conicalGrad.setColorAt(1,Qt::white); painter.setBrush(conicalGrad); painter.drawRect(this->rect()); */ QRect rect(W/4,H/4,W/2,H/2); int startAngle=90*16; int spanAngle=90*16; painter.drawArc(rect,startAngle,spanAngle); painter.drawChord(rect,startAngle,spanAngle); QPoint points[4]={QPoint(5*W/12,H/4),QPoint(3*W/4,5*H/12),QPoint(5*W/12,3*H/4),QPoint(W/4,5*H/12)}; painter.drawConvexPolygon(points,4); QImage image(":images/images/qt.jpg"); //painter.drawImage(rect,image); QVector<QLine>Lines; Lines.append(QLine(rect.topLeft(),rect.bottomRight())); Lines.append(QLine(rect.topRight(),rect.bottomLeft())); Lines.append(QLine(rect.topLeft(),rect.bottomLeft())); Lines.append(QLine(rect.topRight(),rect.bottomRight())); //painter.drawLines(Lines); QPainterPath path; path.addEllipse(rect); path.addRect(rect); painter.fillPath(path,Qt::red); } 运行结果 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70]: /images/20220405/91bb82c171bb4cc9a4807b17c7d83bf0.png
相关 QT第六天 QComboBox和QPlainTextEdit的用法 QComboBox的使用 设计时属性设置 在界面上放置QComboBox组件后,双击组件,弹出列表项编 布满荆棘的人生/ 2022年04月12日 07:21/ 0 赞/ 316 阅读
相关 QT第十天 QFileSystemModel 使用QFileSystemModel作为数据模型,QTreeView,QListView和QTableView为主要组件 在Tree Bertha 。/ 2022年04月11日 11:42/ 0 赞/ 310 阅读
相关 Qt第十六天 QPainter基本绘图 只有最基本的画图 widget.h ifndef WIDGET_H define WIDGET_H 待我称王封你为后i/ 2022年04月08日 13:24/ 0 赞/ 236 阅读
相关 Qt第十五天 自定义对话框及其调用 QWDialogSize的创建 qwdialogsize.h ifndef QWDIALOGSIZE_H define QW 以你之姓@/ 2022年04月08日 12:41/ 0 赞/ 274 阅读
相关 Qt第十二天 QStandardItemModel的使用 实现功能: 打开一个文本文件,该文件为二维数据文件,通过字符串处理获取表头和各行各列数据,导入到QStandardItem Bertha 。/ 2022年04月08日 10:15/ 0 赞/ 391 阅读
相关 Qt第十一天 QStringListModel的使用 采用QStringListModel作为数据模型,QListView组件作为视图组件 演示了QStringListModel和 痛定思痛。/ 2022年04月08日 09:22/ 0 赞/ 251 阅读
相关 Qt第十八天 Graphics View绘图程序实例 \\可以创建矩形,椭圆,圆,三角形,梯形,直线,文字等基本图形项 每个图形项可以被选择,拖动,放缩,旋转 图形项的前置和后 逃离我推掉我的手/ 2022年04月04日 11:47/ 0 赞/ 356 阅读
相关 Qt第十七天 QGraphicsView程序基本结构和功能实现 mainwindow.h ifndef MAINWINDOW_H define MAINWINDOW_ 快来打我*/ 2022年04月04日 09:18/ 0 赞/ 293 阅读
相关 Qt第十六天’ 坐标变换 坐标平移 坐标旋转 坐标缩放 状态的保存和恢复 widget.h ifndef WIDGET_H define WIDGET 快来打我*/ 2022年04月04日 03:07/ 0 赞/ 272 阅读
相关 QT第二十六天 使用Qt制作的串口工具 工程文件加入一下代码 QT +=serialport ifndef WIDGET_H define WI 旧城等待,/ 2022年04月01日 09:51/ 0 赞/ 264 阅读
还没有评论,来说两句吧...