在使用Qt  QPainter 的时候,有时会遇到“QPainter::end: Painter ended whith 2 saced states” 这时由于我们在使用的QPanter.translate();函数,而在绘制结束的时候没有使用 restore()函数 出现QPainter::end: Painter ended whith 2 saced states 敬告,只需要在在绘制的结束的时候加上 restore() 函数就好了了…
使用 QPainter 修改 QPaintDevice 的子类,如果 QPaintDevice 的子类也是 QWidget 的子类,比如自定义QWidget子类.QLabel等,需要把 QPainter 相关语句放入QWidget 子类的 void paintEvent(QPaintEvent *event); 事件函数中.QLabel 等官方 QWidget 子类就需要继承QLabel ,然后重写 void paintEvent(QPaintEvent *event); 函数,否则 Qt cr…
Qt QPainter画个球啊 目录 Qt QPainter画个球啊 看效果 方法 代码 看效果 方法 使用绘图事件,绘制一个图形 使用定时事件,不停更新图形位置 代码 .h #pragma once #include <QWidget> #include <QPaintEvent> #include <QTimerEvent> #define STEP 3 // 球移动的步长 #define WIDTH 50 // 球的宽度 #define HEIGHT 50 //…
多些大家对我的支持啊!有朋友也提出,前面的几节有关event的教程缺少例子.因为event比较难做例子,也就没有去写,只是把大概写了一下.今天带来的是新的部分,有关Qt的2D绘图.这部分不像前面的内容,还是比较好理解的啦!所以,例子也会增加出来.   有人问豆子拿Qt做什么,其实,豆子就是在做一个Qt的画图程序,努力朝着Photoshop和GIMP的方向发展.但这终究要经过很长的时间.很困难的路程的,所以也放在网上开源,有兴趣的朋友可以来试试的呀…   好了,闲话少说,来继续我们的学习吧!  …
1. .h文件中添加 private:    QPoint dragPosition; 2. 在cpp文件中重写鼠标点击和拖拽函数 void ShapeWidget::mousePressEvent(QMouseEvent * event){    if (event->button() == Qt::LeftButton) //点击左边鼠标    {         dragPosition = event->globalPos() - frameGeometry().topLeft(); …
引言 在上一篇中讲述了主窗体的创建和设计.主窗体的无边框效果.阴影效果.拖动事件处理.窗体美化等工作在前面的博客中早就涉及,因此上篇博文中并未花费过多笔墨.这一篇继续讲述工具箱(Tool Button)的实现.另外,在实现的过程中还做了另外一个贴心的小功能:可伸缩的侧边栏.不过后来发现应用起来后效果不佳,于是就没在主窗体中加入这个功能了,单独做了一个demo作为示范. 工具箱的实现 工具箱是将若干的工具按钮组织在一起,为用户提供简便导航功能的一个组件.在Qt中实现这个功能不难,Qt库本身就提供了…
设置 背景颜色和背景图片 首先设置autoFillBackground属性为真然后定义一个QPalette对象设置QPalette对象的背景属性(颜色或图片)最后设置QWidget对象的Palette 实例: # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui from PyQt4.QtGui import * from PyQt4.QtCore import * class Icon(QtGui.QWidget): def __…
关于窗体透明,经常遇到,网上的资料倒不少,也不知道写的时候是否验证过,很多都不正确...今天就在此一一阐述!       以下各效果是利用以前写过的一个小程序作为示例进行讲解!(代码过多,贴主要部分)   正常状态 效果如下:       这部分代码就不贴了(主要讨论透明效果). 一.全透明     setWindowOpacity(0.5);     取值范围为:0.0 - 1.0,默认值为1.0,全透明为0.0,不透明则为1.0.   效果如下:     显而易见,窗体及其子窗体全部透明!…
详细描述: QPainter类提供了许多高度优化的函数去做大部分的GUI绘制工作.它可以画从简单的线到复杂的形状.通常情况下,QPainter的使用是在widget当中的painter事件使用.记得在执行完之后要及时销毁QPainter的对象. void SimpleExampleWidget::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setPen(Qt::blue); painter.setFont(QFont("…
Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制.整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类. QPainter用来执行绘制的操作:QPaintDevice是一个二维空间的抽象,这个二维空间允许QPainter在其上面进行绘制,也就是QPainter工作的空间:QPaintEngine提供了画笔(QPainter)在不同的设备上进行绘制的统一的接口.QPaintEngine类应用于QPainter和QPaintDevice…