qt绘制一圈圆_Qt绘制圆形,矩形等图形   绘制同心圆

原来Qt也可以绘制图形啊。

利用QPainter类来绘制,再辅以其他类,诸如QPen来说明绘制的画笔,QPoint来说明某个点,QPaletee来说明绘制的颜料等等。在QWidget类中来实现虚拟函数oid

paintEvent(QPaintEvent

*)。当调用这个QWidget时,来自动调用绘制函数。将图形更新到QWidget上。

下面先写段简短的程序来说明下:

//----------------------------------------------------------

//在void

layoutWidget::paintEvent(QPaintEvent *)中实现

//(我自己建的类叫layoutWidget类,继承自 QWidget类)

void

LayoutWidget::paintEvent(QPaintEvent *)

{

painter=new QPainter;

painter->begin(this); drawBox(xLength,yLength); //绘制一个矩形(长:xLength,宽:yLength)

drawTarget(x0,y0,painter); //绘制一个圆形(圆心(x0,y0),半径:r(程序中设置))

painter->end();  delete painter;

}

------------------------------------------------

//绘制矩形drawBox()

void

LayoutWidget::drawBox(int width,int length)

{

painter->setBrush(QBrush(Qt::darkGreen,Qt::SolidPattern));

//设置画刷形式

painter->drawRect(xOff,yOff,width,length); //xOff和yOff是距离widget的左上角的像素

}

//drawRect()函数的应用

----------------------------------------------------------------------

//绘制圆形drawTarget() 此为绘制两个同心圆的程序

void

LayoutWidget::drawTarget(int x0,int y0,QPainter *painter)

{

QPoint

point(x0,y0); //圆心

QPalette palette;

painter->setBrush(QBrush(Qt::gray,Qt::SolidPattern));

//设置画刷形式

painter->drawEllipse(point,r1,r1); //画大圆

painter->setBrush(QBrush(palette.brush(QPalette::Background)));

//设置画刷为背景色

painter->drawEllipse(point,r2,r2); //画小圆

}

//drawEllipse()函数的应用,这个函数有多个重载函数,翻来覆去,还是

//把QPoint作为其中一个参数较好,较方便,这个点即为圆形的圆心。其

//他的重载函数还需计算下到Widget左上角的像素,个人觉得有点麻烦。

----------------------------------------------------

//另外,炫耀下我的发现,如何获取窗口的背景颜色?我可是费了好大一番功夫。找到QPaletee

// 类,然后用它的枚举enum ColorRole{Window,Background,WindowText,...,NoRole}

//还有函数const QBrush &bursh(ColorRole

role) const

//所以才有了painter->setBrush(QBrush(palette.brush(QPalette::Background)));

//设置画刷为背景色

这样的调用

真的觉得我很天才啊,哈哈

另外,如何获取窗口的大小?

直接this->width(),this->height()即可获得窗口的宽度和高度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

到成都去是联想的必然选择

“孔雀东南飞,联想西南飞。” 成都一直是笔者最喜欢的城市之一。它又名“蓉”、“锦城”、“锦官城”和“天府之国”。虽然位于中国的中西部,但是科技水平、电脑技术应用和互联网普及水平却远远高于周边地区,经济水平也位列西部各城市首位。再…

【.NET】实现CI/CD(二)运行镜像,自动化部署

(一重山,两重山。)书接上文,在上回中我们说到了《【Azure Core】实现CI/CD(一)构建镜像并推送仓库今天我们继续往下说,说下CD(持续部署)的流程,也是很简单。…

a*算法的时间复杂度_数据结构(1)——算法和时间复杂度

Data Structure1算法和时间复杂度01.什么是数据结构?程序设计 数据结构 算法数据结构是关系,是数据元素相互之间存在的一种或多种特定关系的集合。数据结构和算法凌驾于任何一种编程语言之上。02.逻辑结构和物理结构数据结构分为逻辑结构和物理结构。逻…

新开博客啦

其实决定开一个技术博客很久了,但一直都没找到合适的,博客园的背景确实不错,好像没有其他的广告,算是比较清新的一个网站了吧。 从这里开始,记录自己的学习心得,把自己的学习历程拿出来分享,与你…

C++的enum hack

从一个例子开始吧 class Game { private:static const int GameTurn 10;int scores[GameTurn]; };对于支持类内初始化的C编译器,这段代码可以编译通过。 但是较老的C编译器,可能不支持类内初始化,这样我们的静态常量,必须要在类外…

android vcard解析代码,Android使用vcard文件的方法简单实例

本文实例讲述了Android使用vcard文件的方法。分享给大家供大家参考,具体如下:FileOutputStream os null;try {os VCardTest.this.openFileOutput("Android.vcf", MODE_PRIVATE);} catch (FileNotFoundException e1) {// TODO Auto-generated…

学会了!如果认错人了,就像这样亲一口!

1 千万不要用曲面屏炒股▼2 谁掏钱多就听谁的准没错▼3 你和你妈的通话记录▼4 em......陷入沉思▼5 人类1994年拍摄到的冥王星人类2018年拍摄到的冥王星▼6 猫:你滚开!劳资不要运动!▼7 吃下去长肉了你来找我我给你送实验室研究研究▼…

短文件名漏洞如何修复_短文件名漏洞修复

短文件名漏洞其实在13年时还是很令人耳熟能详的,不过随着所在公司的编码语言转型,目前使用ASP.NET的新项目基本上没有了,而更多的是对原来的采用ASP.NET语言开发的项目进行维护或打个补丁。事出突然,12月的某个下午被项目组喊去帮…

在MinGW下使用DShow的方法

用MinGW编译DShow的东西,经常遇到没找到IBaseFilter的问题。本质上是MinGW的w32api并没有提供完整的DShow头文件所致。经过一番折腾,得到了下面的解决方案: 1. 从http://sourceforge.net/projects/mingw-w64/下载mingw-w64-headers&#xff0…

十个现象,识别程序员的“水份”

大家好,我是Z哥。下周五正好是国庆,我也给自己放个假,就不发文了。所以今天是节前最后一篇文章,先提前祝大家国庆快乐,可以好好放松一下。今天我们不聊干货了,聊点轻松的,来吐槽一下程序员的那些…

android 更改edittext内容,Android如何实时更改edittext的内容

为此使用TextWatcher。设置它的EditText用户类型:myEditText1.addTextChangedListener(new TextWatcher() {Overridepublic void afterTextChanged(Editable s) {String value s.toString();// Perform computations using this string// For example: parse the v…

python循环语句嵌套_Python 循环语句

循环语句 ​循环语句主要是用于解决某些重复的代码工作,使需要重复的代码只写一遍即可。 Python循环语句主要有两种:while循环和for...in...循环。 一、while循环 主要用于不确定循环的次数时,根据条件进行判断,条件成立&#xff…

linux部署的java应用,浏览器访问时,报域名解析错误

工作中,经常需要在Linux环境中部署Tomcat,配置java应用。在浏览器中访问应用时,却报域名解析错误,该怎么样解决呢? 解决方法:关闭防火墙 iptables -L -n    查看已添加的iptables规则 iptables -F se…

那些年,冒死拍过的老师逗逼搞笑照片 !

全世界只有3.14 % 的人关注了爆炸吧知识「你曾经拍到过老师哪个搞笑的瞬间」哈哈哈哈哈哈啊哈哈哈哈已笑疯了拍照的人最后真的都没有被打死吗_石小麦:这张?wanngsh-:当历史老师谈及日本女人2HyFMm:班主任扔实心球曹梓建&#xff1…

程序员吐槽_产品经理吐槽大会,程序员勿入

前两天网上有个程序员吐槽大会我看挺多人在转的,这么公开黑产品经理,除了娱乐效果之外,确实也反映了很多问题。作为一个前程序员,现产品经理,我觉得还是得说几句。首先以产品经理的角度自省,然后我再吐槽一…

记一次 .NET 某上市工业智造 CPU+内存+挂死 三高分析

一:背景 1. 讲故事上个月有位朋友加wx告知他的程序有挂死现象,询问如何进一步分析,截图如下:看这位朋友还是有一定的分析基础,可能玩的少,缺乏一定的分析经验,当我简单分析之后,我发…

(太棒了)程序员的十个层次 你属于哪一层?

http://developer.51cto.com/art/201011/233083.htm 转载于:https://blog.51cto.com/smasher/420147

60佳优秀的 Photoshop 网页制作教程【下篇】

Photoshop 作为网页设计利器,是网页设计师必备。曾经和大分享过几篇优秀的 Photoshop 网页制作教程,喜欢的人非常多。今天这篇文章继续向大家分享优秀的 Photoshop 网页制作教程。其实,网页设计并没有你想的那么难,相信看完这些教…

android studio 创建.9文件,自己使用Android studio创建.9(点9)图片

本来标题想写"Mac版Android studio创建.9图片",但是感觉区别应该不大,因为只需要拖拽一下鼠标就行了,键盘以及快捷键都不用不上。这篇文章其实也是自己看了其他文章后的一点补充,并不是所有人都会有的问题。既然是想标为…

java stream 求和_谈谈Java任务的并行处理

作者:ksfzhaohui前言谈到并行,我们可能最先想到的是线程,多个线程一起运行,来提高我们系统的整体处理速度;为什么使用多个线程就能提高处理速度,因为现在计算机普遍都是多核处理器,我们需要充分…