little tips of painter.drawRect in Qt】的更多相关文章

一个QImage或QPixmap新建变量时,第一次填充图片时设置的宽高正常(fill),其后的绘制操作(draw)则会在绘制的矩形底边和右边加上painter.pen().width() 在下面代码17行设置端点查看内存可以直观看到只在右边和底边++ // 1. 生成掩码图 ; ; QImage maskImg(width, height, QImage::Format_Mono); QPainter maskPainter(&maskImg); // maskPainter.setPen(QP…
1.生成二维码 利用第三方库qrencode ,将qrencode源码添加到自己的程序中,直接调用使用. 参考http://blog.csdn.net/zhangxufei/article/details/52149892 1.qrencode-3.4.4文件夹复制到源代码下面,把*.h*.c文件加入到工程中. 2.在QT pro文件添加 DEFINES += HAVE_CONFIG_H INCLUDEPATH += qrencode-3.4.4/ 3.重新定义 MAJOR_VERSION.MI…
Qt中有一些封装好的对话框,比如QMessageBox.QColorDialog等,用途很广,但缺点是样式难以改变,直接拿来用可能与我们自己的系统样式不搭配,显得很难看. 所以我在无聊的时候,就自己写了一个简易的颜色选取器. 先看一下设计完成后的界面—— 下面分别介绍它的各个部分 一.色调(Hue).饱和度(Saturation).亮度(Value或Brightness) 不考虑透明度,我们可以这样认为——H.S.V这三个值可以决定一个颜色,就跟R.G.B三个值决定一个颜色类似. 再看上面的图片…
引言 在上一篇中讲述了主窗体的创建和设计.主窗体的无边框效果.阴影效果.拖动事件处理.窗体美化等工作在前面的博客中早就涉及,因此上篇博文中并未花费过多笔墨.这一篇继续讲述工具箱(Tool Button)的实现.另外,在实现的过程中还做了另外一个贴心的小功能:可伸缩的侧边栏.不过后来发现应用起来后效果不佳,于是就没在主窗体中加入这个功能了,单独做了一个demo作为示范. 工具箱的实现 工具箱是将若干的工具按钮组织在一起,为用户提供简便导航功能的一个组件.在Qt中实现这个功能不难,Qt库本身就提供了…
原文地址:http://blog.sina.com.cn/s/blog_a6fb6cc90101eoc7.html 阴影边框很常见,诸如360以及其他很多软件都有类似效果,了解CSS3的同学们应该都知道box-shadow,它就是来设定阴影效果的,那么Qt呢?看过一些资料,说是QSS是基于CSS2的,既然如此,box-shadow是基于CSS3的!那么Qt定然就用不了!     搜了一些资料,每张图片都做成阴影效果的固然不可能,直接舍弃(即使可以,也不采纳).如果实时的去画图,效率太低,最后选择…
导读 一款流行的软件,往往会在功能渐趋完善的时候,通过改善交互界面来提高用户体验.毕竟,就算再牛逼的产品,躲藏在糟糕的用户界面之后总会让用户心生不满.界面设计需综合考虑审美学.心理学.设计学等多因素,是一份精细活.这篇博文仍然以Qt的使用为主旨,探讨一下在Qt中如何进行系统托盘的个性化定制. 介绍 首先我们看看几款知名软件的系统托盘设计: 上图是金山卫士的系统托盘菜单设计.我们稍作分析:整个托盘菜单窗口是个半透明的设计,窗口边框进行了圆角处理.底部的菜单项包含三个Button,倒数第二.三个菜单…
在qt中提供了三种渐变方式,分别是线性渐变,圆形渐变和圆锥渐变.如果能熟练应用它们,就能设计出炫目的填充效果. 线性渐变: 1.更改函数如下: void Dialog::paintEvent(QPaintEvent *){    QPainter painter(this);    QLinearGradient linearGradient(100,150,300,150);    //从点(100,150)开始到点(300,150)结束,确定一条直线    linearGradient.se…
在最近做的行人检测项目中,由于需要训练分类器,而分类器的训练又需要有一个一定长宽的样本.为了方便样本的采集,因此实现了这样的一个截图程序.该程序的主要功能是加载视频到程序中,程序可以对视频进行播放.暂停的控制.程序可以在播放界面中直接拖动,画出选区,然后确认保存即可将截取的图片保存到指定路径中并且重新设置截取出来的图片的大小,以适应分类 器训练的需要.该程序的开发环境为Qt4.8.5+qtcreator2.8.0,其中还用到了opencv中的一些函数. 程序的主要界面如下: 主界面 播放视频并截…
Qt动画 转载自: <http://jingyan.baidu.com/article/154b46315757b628ca8f4116.html> 和  <http://blog.csdn.net/syzobelix/article/details/9377863> Qt动画架构中的主要类如下图所示: 动画框架由基类QAbstractAnimation和它的两个子类QVariantAnimation和QAnimationGroup组成. QAbstractAnimation是所有…
void QWidget::repaint ( int x, int y, int w, int h, bool erase = TRUE ) [槽]通过立即调用paintEvent()来直接重新绘制窗口部件,如果erase为真,Qt在paintEvent()调用之前擦除区域(x,y,w,h). 如果w是负数,它被width()-x替换,并且如果h是负数,它被height()-y替换. 如果你需要立即重新绘制,建议使用repaint(),比如在动画期间.在绝大多数情况下,update()更好,因…
Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制.整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类. QPainter用来执行绘制的操作:QPaintDevice是一个二维空间的抽象,这个二维空间允许QPainter在其上面进行绘制,也就是QPainter工作的空间:QPaintEngine提供了画笔(QPainter)在不同的设备上进行绘制的统一的接口.QPaintEngine类应用于QPainter和QPaintDevice…
// In this function, we can get the height and width of the current widgetvoid Widget::resizeEvent(QResizeEvent *){    // Use a bitmap as a mask. A bitmap only has two kind of colors: white(value is 0)    // or black(other values). When we use it to…
#3个类:QPainter,QPainterDevice 和 QPaintEngine 三个类 #qpainter用于执行绘制操作 #QPainterDevice是一个二维空间抽象,允许qpainter在其上面进行绘制,也就是qpainter工作空间 #QPaintEngine 提供了画笔(qpainter)在不同设备上进行绘制统一接口,QPaintEngine类应用于QPainter和QPaintDevice 之间,如果需要自定义一个设备时 #则不需要关心QPaintEngine 这个类的QP…
在这里自定义窗口是通过继承于QFrame,内部分为上下两部分,上半部分就是标题栏,下面是窗口的具体内容.上下两部分通过布局固定位置.最后窗口的各种鼠标拖动,缩放,等操作通过添加鼠标事件来完成一个窗口的常规功能.当然,这个标题栏可以通过布局的改变把它放到任意地方. 下面是实现的代码: #pragma once #ifndef CUSTOMWIDGET_H_ #define CUSTOMWIDGET_H_ #include <QtWidgets/QFrame> class QToolButton;…
不知是哪个版本的迅雷,有个“下载速度柱状图”的小界面,我比较喜欢(只不过最新版本的迅雷却没了),所以决定来山寨一个.当然,这个山寨品不能下载文件,呵呵. 思路:1:将界面的背景涂成黑色2:每隔0.1秒就产生一个随机数,将它们添加到一个容器中 3:重载paintEvent函数,,从界面的右边开始,依次将容器中的元素按倒序画出来(每个数据就是一个柱形) 截图: 代码: #include <QtGui> #include <QtCore> class BarChart : public …
昨天在玩手机游戏时,见到一个游戏的饼状投票统计图很漂亮,所以我今天也花了一个下午来实现了一个类似的程序娱乐一下,呵呵. 思路:1:将窗体设为Qt::FramelessWindowHint和Qt::WA_TranslucentBackground(去掉标题栏,背景透明).2:重载程序的鼠标事件(移动程序)和键盘事件(模拟投票和退出).3:根据投票结果,在paintEvent函数中画几个扇形和其他东西. 操作说明:1:按数字键0-9模拟投票. 2:按ESC键退出程序. 运行时截图(浅绿色的是桌面背景…
QT与很多GUI库不同(如MFC),它不能随时随地地在界面上画图,只能在界面类的painterEvent中画图,如此一来,想在绘制QT界面时使用状态模式(GOF的23种设计模式之一)就有点困难了,作为解决方案,我先把要界面上的图片绘制在一张图片上(QPixmap),然后再在painterEvent中将Pixmap“画”到界面上.以下是这种方法的一个小例子. 截图: 源代码: #include <QtGui> //状态类的基类,定义了各个公用接口, //其中,SetPixmap是一个纯虚接口 c…
QT里没有相应统计图形的绘制组件 只有手工自己画 效果如图 void aaq::paintEvent( QPaintEvent* ev ) { QPainter painter(this); // 去除画笔 painter.setPen(Qt::NoPen); // 设置反锯齿 painter.setRenderHint(QPainter::Antialiasing); //******************************************** 圆饼图 ************…
多些大家对我的支持啊!有朋友也提出,前面的几节有关event的教程缺少例子.因为event比较难做例子,也就没有去写,只是把大概写了一下.今天带来的是新的部分,有关Qt的2D绘图.这部分不像前面的内容,还是比较好理解的啦!所以,例子也会增加出来.   有人问豆子拿Qt做什么,其实,豆子就是在做一个Qt的画图程序,努力朝着Photoshop和GIMP的方向发展.但这终究要经过很长的时间.很困难的路程的,所以也放在网上开源,有兴趣的朋友可以来试试的呀…   好了,闲话少说,来继续我们的学习吧!  …
void QWidget::repaint ( int x, int y, int w, int h, bool erase = TRUE ) [槽] 通过立即调用paintEvent()来直接重新绘制窗口部件,如果erase为真,Qt在paintEvent()调用之前擦除区域(x,y,w,h). 如果w是负数,它被width()-x替换,并且如果h是负数,它被height()-y替换. 如果你需要立即重新绘制,建议使用repaint(), 比如在动画期间.在绝大多数情况下,update()更好…
提要 需求:载入一张图片并显示,能够放大缩小,能够截取图片的某个矩形并保存. 原以为蛮简单的一个功能,事实上还是有点小复杂. 最简单Qt图片浏览器能够參考Qt自带的Demo:Image Viewer Example 看一下终于的实现效果: 图片的载入显示 这里须要实现一个QImageViewer的类.继承自QWidget. 图片用QPixmap来载入和显示,还有三个成员各自是图片的缩放因子,图片是否已经载入,viewer是否已经初始化,是否处于裁剪状态. private: QPixmap m_p…
基于在最近的研究Qt语音识别平台下.在此记录12 首先,语音识别做三件事 1.记录用户的语音文件到本地 2.将用户语音编码 使用flac或者speex进行编码 3.使用第三方语音识别API或者SDK进行分析识别语音       眼下做的比較简单就是使用flac文件对wav音频文件进行编码       基于Mac OSX和Win 7平台的       win 7下使用flac.exe,详细exe帮助,读者能够使用flac.exe --help > help.txt 重定向到一个help文件里,方便…
预览效果: Maze.pro文件 #------------------------------------------------- # # Project created by QtCreator --26T14:: # #------------------------------------------------- QT += core gui greaterThan(QT_MAJOR_VERSION, ): QT += widgets TARGET = Maze TEMPLATE =…
QString temp=""; //m_File_Content_Text_Edit->selectAll(); QString t_File_Content = m_File_Content_Text_Edit->toPlainText(); // pdf文件生成 QPrinter printer; printer.setOutputFormat(QPrinter::PdfFormat); printer.setOutputFileName(filename); QPa…
画过图的都知道,我们常常用颜色的深浅来表示值的大小,在Matlab作图中,我们使用的是colorbar这个函数来给出颜色的直观参考.下面给出Matlab的示例:在Matlab命令窗口输入: figure surf(peaks) colorbar 可以得到的图像如下: 通过右击该颜色栏,可以选择不同的颜色,当选择jet后,可以得到如下的图像: 那上面的示例来说,使用颜色栏的好处是可以显示四维信息,例如(x,y,z)表示了一个三维空间的坐标,坐标点温度的大小则可以通过颜色栏的温度来表明.当然,要说明…
到官网下载qrencode http://fukuchi.org/works/qrencode/index.html.en qrenc.c不用,这个是测试用的,把config.h.in文件改为config.h文件,把.h文件和.cpp文件导入,在整个项目的pro文件中加入 DEFINES +=HAVE_CONFIG_H OTHER_FILES += qrcode/config.h.in #include "qrcode/qrencode.h" void MainWindow::Gene…
1. 创建一个继承于QWidget的类,重载一个叫paintEvent的函数, 2. 在paintEvent函数中调用Qpainter类,此类是一个重量级类,在paintEvent函数尽量只创建一次 3. 如描画柱状图:在paintEvent函数中 QPainter painter(this); QPen pen; pen.setColor(Qt::blue); pen.setWidthF(); painter.setPen(pen); painter.drawRect(posx, posy,…
转载自 网易博客:sun的博客 http://zhouyang340.blog.163.com/blog/static/3024095920126710504178/ 2D绘图 Qt4中的2D绘图部分称为Arthur绘图系统.它由3个类支撑整个框架,QPainter,QPainterDevice和QPainterEngine.QPainter用来执行具体的绘图相关操作如画点,画线,填充,变换,alpha通道等.QPainterDevice是QPainter用来绘图的绘图设备,Qt中有几种预定义的…
前言 做过安防视频监控的同学都清楚,在视频监控系统软件上都可以看到一个云台控制区域,可以对球机进行下下左右等八个方位的运动控制,还可以进行复位,一般都是美工作图好,然后贴图的形式加入到软件中,好处是程序简单,界面美工,主要取决于美工的美图能力,缺点是对于各种分辨率的适应性稍微差点,需要不同的图片切图贴图,除非默认做好的是大图自适应看不出差别,可能大部分人所在的公司都是小公司,一般美工人员比较少甚至没有,都需要程序员一人负责,甚至一开始就要考虑到各种分辨率的应用场景以及后期可能的换肤换色等. 之前…
前言 动画按钮组控件可以用来当做各种漂亮的导航条用,既可以设置成顶部底部+左侧右侧,还自带精美的滑动效果,还可以设置悬停滑动等各种颜色,原创作者雨田哥(QQ:3246214072),驰骋Qt控件界多年,雨田哥是我见过的在这块水平相当牛逼的,在我之上,想要什么效果都可以搞出来,大家也可以找他定制控件,物美价廉! 实现的功能 1:可设置线条的宽度 2:可设置线条的颜色 3:可设置线条的位置 上下左右 4:可设置按钮的正常+悬停+选中背景颜色 5:可设置文字的正常+悬停+选中背景颜色 6:切换位置线条…