Qt画线条
来源:互联网 发布:淘宝怎么打开链接 编辑:程序博客网 时间:2024/05/18 23:55
转自:
http://blog.csdn.net/yuxiaohen/article/details/7697989
情况是这样的,现在设计一个地图,地图上的点(假设为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;
private:
sightSpot *buttons[5];
public:
//constructor and ~constructor
Clandscape(QWidget *para_parentWidget);
protected:
void paintEvent(QPaintEvent *);
};
可以看到在protected里面对paintEvent进行了重载
在看promote.cpp里面对这个重载函数进行了定义
-------------promote.cpp--------------------
#include "promote.h"/*Clandscape*/
//constructor
Clandscape::Clandscape(QWidget *para_parentWidget) : QFrame(para_parentWidget){}//overload paintEventvoid Clandscape::paintEvent(QPaintEvent *event){QPainter painter(this);//1,2相距10painter.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相距50painter.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相距5painter.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相距30painter.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相距20painter.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相距25painter.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的重载....
0 0
- Qt画线条
- Qt画线条
- 关于QT画线条的优化
- QT画线
- Word画线条
- iOS 画布:画线条
- IOS画线条
- android 中画线条
- canvas 画线条
- QT 画线嵌套问题
- QT QGraphicsView 画线
- Qt Scene graph画线
- 鼠标画线条小程序
- 随机画线条,基于windowsApi
- html 字体上画线条
- Unity实现画线条功能
- Unity实现画线条功能
- 用伪类画线条、圆点
- codeforces 754 A Lesha and array splitting
- Trees on the level 树的层次遍历 UVA 122(BFS)
- Python解析mnist出错的解决方法
- 支持向量机—SMO论文详解(序列最小最优化算法)
- Apache Shiro系列三:10分钟入门
- Qt画线条
- 操作系统概念-内核同步-信号量
- Ajax 理解,使用,记录
- sk_buff 详解(一)
- 利用QT中Qpainter画点,直线,弧线等简单图形
- opencv学习笔记(二十)cvFilter2D()卷积以及卷积边界的处理
- java.lang.OutOfMemoryError: PermGen space错误jdk内存溢出配置
- uart自动流控制
- uva1386 Cellular Automaton