qt画皮卡丘丘画求订阅的

Qt画线条 - 岁月荣光
- 博客频道 - CSDN.NET
& & 情况是这样的,现在设计一个地图,地图上的点(假设为pushButton)在Qt Designer中进行勾勒,都放在一个frame里面,然后将一些地图上联通的点使用直线连接起来.嗯....其实这是图的基本演示.....如果你没看明白我在说什么,那就看下面的图吧
上面的线条有锯齿.....官方有个demo,看截图
里面的线条十分优美....不过在下才疏学浅....还没吃透这个demo....先看看图1(就是在下弄的那个有锯齿的...)主要就是重载了paintEvent事件
首先,静态图是在designer里面勾勒的,就是没有直线的图(有人喜欢纯码代码来构建UI.....不过我属于比较懒的人.....就直接用designer了....)
在Qt Designer里面有一个和纯手工子类化大致相同的功能,叫&提升&...来看看怎么使用
重点在提升的类名称,和头文件
提升的类名称是自己将要子类化QFrame的类的名称,头文件是自己要编码的...不是自动生成的...........
我填的分别是Clandscape和promote.h
看看promote.h的内容
----------promote.h-----------------------------------------------
#include &QFrame&
#include &QPainter&
class sightSpot;
class Clandscape : public QFrame{
friend class Cmainwindow;
sightSpot *buttons[5];
//constructor and ~constructor
Clandscape(QWidget *para_parentWidget);
protected:
void paintEvent(QPaintEvent *);
可以看到在protected里面对paintEvent进行了重载
在看promote.cpp里面对这个重载函数进行了定义
-------------promote.cpp--------------------
#include &promote.h&/*Clandscape*///constructorClandscape::Clandscape(QWidget *para_parentWidget) : QFrame(para_parentWidget){}//overload paintEventvoid Clandscape::paintEvent(QPaintEvent *event){
QPainter painter(this);
//1,2相距10
painter.drawLine( QPointF(buttons[0]-&x() + (buttons[0]-&width() / 2),buttons[0]-&y() + (buttons[0]-&height() / 2)),QPointF(buttons[1]-&x() + (buttons[1]-&width() / 2),buttons[1]-&y() + (buttons[1]-&height() / 2)) );
//1,3相距50
painter.drawLine( QPointF(buttons[0]-&x() + (buttons[0]-&width() / 2),buttons[0]-&y() + (buttons[0]-&height() / 2)),QPointF(buttons[2]-&x() + (buttons[2]-&width() / 2),buttons[2]-&y() + (buttons[2]-&height() / 2)) );
//2,5相距5
painter.drawLine( QPointF(buttons[1]-&x() + (buttons[1]-&width() / 2),buttons[1]-&y() + (buttons[1]-&height() / 2)),QPointF(buttons[4]-&x() + (buttons[4]-&width() / 2),buttons[4]-&y() + (buttons[4]-&height() / 2)) );
//3,5相距30
painter.drawLine( QPointF(buttons[2]-&x() + (buttons[2]-&width() / 2),buttons[2]-&y() + (buttons[2]-&height() / 2)),QPointF(buttons[4]-&x() + (buttons[4]-&width() / 2),buttons[4]-&y() + (buttons[4]-&height() / 2)) );
//3,4相距20
painter.drawLine( QPointF(buttons[2]-&x() + (buttons[2]-&width() / 2),buttons[2]-&y() + (buttons[2]-&height() / 2)),QPointF(buttons[3]-&x() + (buttons[3]-&width() / 2),buttons[3]-&y() + (buttons[3]-&height() / 2)) );
//4,5相距25
painter.drawLine( QPointF(buttons[3]-&x() + (buttons[3]-&width() / 2),buttons[3]-&y() + (buttons[3]-&height() / 2)),QPointF(buttons[4]-&x() + (buttons[4]-&width() / 2),buttons[4]-&y() + (buttons[4]-&height() / 2)) );}
ok.....就这样完成了对paintEvent的重载....
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:45800次
积分:1061
积分:1061
排名:千里之外
原创:61篇
评论:18条
(1)(1)(2)(1)(1)(1)(2)(2)(1)(1)(2)(7)(5)(5)(1)(14)(2)(6)(1)(1)(1)(2)(4)QT画多边形问题!_qt吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:16,845贴子:
QT画多边形问题!收藏
我想通过鼠标单击一点点画这个多边形,问题是现在没有取反了,也就是前一刻的线没法取消了,QT是怎么解决的?双缓冲我没看明白。那个update(x1,y1,w,h)我就没弄明白什么意思。
不懂画图…友情帮顶
没看懂你在说什么,双缓冲的话,先画在image上,再画到widget
双缓冲就是两个画布
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或轩辕传奇qt 接待谁会唱皮卡丘的啊_百度知道
轩辕传奇qt 接待谁会唱皮卡丘的啊
我有更好的答案
按默认排序
其他类似问题
您可能关注的推广
轩辕传奇的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 画皮卡丘度步骤 的文章

 

随机推荐