QT每日一练day24:绘画事件
一.第一阶段
设置线条粗细
二.第二阶段:设置笔的样式
如:虚线
三.第三阶段:绘制矩形
四.第四阶段:设置颜色
轮廓颜色
笔刷颜色
笔刷样式
五.第五阶段:绘制其他形状图像和文字
六.第六阶段:图像旋转
七.第七阶段:图像缩放
八.第八阶段:坐标系原点变换
尽管painter的原点坐标系变换了,但不会影响顶级窗口的原点坐标系。
九.第九阶段:画笔的保存和还原
注意:使用QPinter在QWidget派生类对象上绘制图形时,QPainter必须放在paintEvent事件处理函数里面绘制。
十.附代码:
xiaowen_QT_day24.pro
QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp \widget.cppHEADERS += \widget.h# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);void paintEvent(QPaintEvent *event);~Widget();
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include<QDebug>
#include<QPainter>
#include<QPushButton>
Widget::Widget(QWidget *parent): QWidget(parent)
{auto *pb=new QPushButton(this);pb->move(100,100);}
#if 0
void Widget::paintEvent(QPaintEvent *)
{static int i=0;qDebug()<<__FUNCTION__<<i++<<endl;QPainter painter;painter.begin(this);/*画笔绘制轮廓*///painter.setPen(QPen(Qt::red,10,Qt::DashLine));painter.setPen(QPen(Qt::red));/*笔刷填充颜色*/painter.setBrush(QBrush(Qt::blue));//painter.setBrush(QBrush(Qt::blue,Qt::Dense1Pattern));painter.drawLine(0,0,100,100);painter.drawRect(100,100,100,200);painter.drawEllipse(200,200,100,200);painter.drawText(100,100,"你一定要主动!");painter.end();
}
#endif
void Widget::paintEvent(QPaintEvent *)
{QPainter painter;painter.begin(this);painter.setPen(Qt::red);painter.setBrush(Qt::red);painter.drawRect(100,100,100,100);painter.save();painter.setPen(Qt::blue);painter.setBrush(QBrush(Qt::blue));painter.drawRect(200,100,100,100);painter.restore();painter.drawRect(300,100,100,100);painter.end();
}
Widget::~Widget()
{}
main.cpp
#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
QT每日一练day24:绘画事件相关推荐
- QT每日一练day4:ubuntu中使用QT
(本文主要是为了说明QT的跨平台特性) 一.安装QT sudo apt-get install qt5-default qtcreator cmake 二.打开QT 可以点击图标或命令行方式: 三 ...
- QT每日一练day1:第一个程序
参考博文:Qt常见类.窗口类继承关系树图 QT每日一练(1):第一个程序 最终效果(GIF动图): step1: step2: step3: step4: step5: step6: step7: s ...
- QT每日一练day25:触发绘画事件
运行结果(GIF动图): widget.cpp 附代码: xiaowen_QT_day25.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT ...
- QT每日一练day22:键盘事件
一.第一阶段--键盘按键按下事件 运行结果(GIF动图): xiaowen_QT_day22.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): Q ...
- QT每日一练day21:鼠标事件
一.第一阶段--鼠标点击和释放事件 运行结果(GIF动图): MouseEvent.pro #------------------------------------------------- # # ...
- QT每日一练day23:鼠标进入与离开事件
运行结果(GIF动图): xiaowen_QT_day23.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFI ...
- QT每日一练day20:事件处理机制
运行结果: day20.pro QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11# The fo ...
- QT每日一练day29:QT中的多线程探究
一.未使用多线程,则w0先运行完后,w1才开始运行 运行结果(GIF动图): main.cpp xiaowen_QT_day29.pro QT+=widgets SOURCES += \main.cp ...
- QT每日一练day27:绘制不规则窗体
注:本文本来应该是以一个不规则的图片作为历程的,,忘记了!!!! 一.第一阶段:隐藏窗体框架 运行结果(GIF动图): widget.cpp 二.第二阶段:将窗口设置为透明 运行结果(GIF动 ...
最新文章
- 第七章 ReentrantLock总结
- java内部类的定义原则
- Apache POI读取Excel
- 精读《图解HTTP》
- 讯飞输入法将深度神经网络DNN技术应用于语音识别达到业界领先水平
- new对象后的代码块(匿名类)
- db.serverStatus()
- 双击ctrl搜索 意在颠覆用户的习惯
- 用Adobe Flex3开发AIR应用程序–入门指南
- python在煤矿的用途-息烽高校邦数据科学通识课【Python爬虫】答案
- 腾讯企业邮箱申请步骤
- 主频不同的服务器性能差异,0.2GHz主频差距可有可无?E3处理器实测
- Calander 类的使用
- 实验报告:定义一个名为MyRectangle的矩形类,完成如下要求
- android内存最小版本下载,猫和老鼠精简版下载-猫和老鼠内存最小版下载v6.6.1 安卓版-芒果手游网...
- 大型企业集团网络与信息安全保密总体方案及策略
- media-有声小说工作流详解
- 长期稳定短视频去水印微信小程序源码
- 快速集成华为AGC云存储服务-Web
- 海康威视网络监控摄像头常见设置-工作随笔