随笔分类 -  4.3 QT学习之路

摘要:渐变有三种:QLinearGradient、QConicalGradient 、 QRadialGradient 它们都有一个QGradient父类 QGradient父类的常用公共函数有: QLinearGradient线性渐变 构造函数函数如下: 示例1-垂直渐变: 示例2-水平渐变 Qradi 阅读全文
posted @ 2018-06-28 15:30 诺谦 阅读(19886) 评论(3) 推荐(4) 编辑
摘要:自定义窗口及拖动 1.自定义无边框窗口时,需要将窗口标志设为: Qt::FramelessWindowHint |Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint 2.然后还需要通过安装EventFilter给自己监视窗口拖动 其中构造函数 阅读全文
posted @ 2018-06-27 21:14 诺谦 阅读(11060) 评论(4) 推荐(3) 编辑
摘要:介绍 可以在QPaintDevice类上绘制各种图形 QPaintDevice类表示QPainter的绘图设备(画布) QpaintDevice子类有QImage、QOpenGLPaintDevice、QWidget 等 所以, QPainter可以在QImage、QOpenGLPaintDevic 阅读全文
posted @ 2018-06-20 15:14 诺谦 阅读(54216) 评论(11) 推荐(12) 编辑
摘要:如下图所示: 效果如下: (gif录制的动画效果不好,所以颜色有间隙) 介绍 通过qss实现,只需要一个多彩背景图,通过QImage获取颜色,然后来设置进度条,便可以实现动态多彩进度条(根据图片设定颜色) 其中,上面3个进度条就是通过以下3个图片实现的: 如果想实现其它颜色,只需要改图片即可 代码如 阅读全文
posted @ 2018-06-17 16:19 诺谦 阅读(18712) 评论(12) 推荐(6) 编辑
摘要:在上一章学习 25.QT-模型视图 后,本章接着学习视图委托 视图委托(Delegate)简介 由于模型负责组织数据,而视图负责显示数据,所以当用户想修改显示的数据时,就要通过视图中的委托来完成 视图委托类似于传统的MVC设计模式里的Controller(控制器)角色 Model(模型) - 负责数 阅读全文
posted @ 2018-06-15 11:42 诺谦 阅读(10113) 评论(2) 推荐(7) 编辑
摘要:模型视图设计模式的核心思想 使模型(数据)与视图(显示)相分离 模型只需要对外提供标准接口存取数据,无需数据如何显示 视图只需要自定义数据的显示方式,无需数据如何组织存储 当数据发生改变时,会通过信号通知视图 当用户与视图进行交互时,会通过信号向模型发送交互信息 在QT中提供了以下几种预定义模型: 阅读全文
posted @ 2018-06-10 20:00 诺谦 阅读(4684) 评论(0) 推荐(1) 编辑
摘要:QTableView view(this); QStandardItemModel model(this); /*设置表头水平标题*/ model.setHorizontalHeaderItem(0,new QStandardItem("Name")); model.setHorizontalHea 阅读全文
posted @ 2018-06-08 15:00 诺谦 阅读(6576) 评论(3) 推荐(3) 编辑
摘要:XML介绍 XML 用于存储数据,数据的形式类似于树结构(参考: http://www.runoob.com/xml/) 示例如下 其中第一行是XML声明,定义XML版本(1.0)以及所使用的编码格式 接下来的<note>,便是该文档的根元素 剩下的<to>,<from>,<heading>,<bo 阅读全文
posted @ 2018-05-30 16:38 诺谦 阅读(9970) 评论(1) 推荐(1) 编辑
摘要:QTreeWidget树形列表 设置标签相关函数 示例: 效果: 添加列表数据 通过QTreeWidgetItem类的setText()实现 示例: 效果: QTabWidget 能在同一个窗口中自由切换不同页面的内容(比如可以同一个软件并行显示多个文档) QTabWidget对象每次只能添加一个Q 阅读全文
posted @ 2018-05-30 14:14 诺谦 阅读(2820) 评论(0) 推荐(0) 编辑
摘要:通过 QPainter 绘画实现,以本地图片985*740为例 如下图所示: 效果如下所示: 实现原理 主要通过以下函数实现: void QPainter::drawTiledPixmap ( int x, int y, int w int h const QPixmap & pixmap, int 阅读全文
posted @ 2018-05-18 17:10 诺谦 阅读(19763) 评论(14) 推荐(6) 编辑
摘要:Qt发送事件分为两种 -阻塞型事件发送 需要重写接收对象的event()事件处理函数 当事件发送后,将会立即进入event()事件处理函数进行事件处理 通过sendEvent()静态函数实现阻塞发送: sendEvent()函数是阻塞式的,所以支持栈空间/堆空间事件对象的发送(局部对象和new分配的 阅读全文
posted @ 2018-05-15 20:25 诺谦 阅读(23323) 评论(5) 推荐(2) 编辑
摘要:QPlainEdit编辑功能 Public Slots Signals 示例代码 Widget.h: Widget.c: 效果: 阅读全文
posted @ 2018-05-07 17:28 诺谦 阅读(2227) 评论(0) 推荐(0) 编辑
摘要:Qt事件处理介绍 Qt平台会将系统产生的消息转换为Qt事件 Qt事件是一个QEvent的对象 Qt事件用来描述程序内部或外部发生的动作 任意的QObject对象都具备事件处理的能力 如下图所示,可以看到QEvent的子类非常之多: 比如: QInputEvent:用户输入事件 QDropEvent: 阅读全文
posted @ 2018-05-05 22:12 诺谦 阅读(8236) 评论(13) 推荐(5) 编辑
摘要:他们的时间复杂度如下所示: O(logn): 当数据增大n倍时,耗时增大logn倍(这里的log是以2为底的)。二分查找就是O(logn)的算法,每找一次排除一半的可能,256个数据最坏情况是8次到目标。 O(n): 就代表数据量增大几倍,耗时也增大几倍。比如常见的遍历算法 O(1): 最低的时间复 阅读全文
posted @ 2018-05-03 16:25 诺谦 阅读(6056) 评论(1) 推荐(1) 编辑
摘要:QT检测内存泄漏 在Linux Qt Creator里,有个Valgrind内存分析器,它用来检测应用程序是否发生内存泄漏 安装: 如何使用Valgrind内存分析器 1.启动Valgrind内存分析器 2.分析出有多处有可疑内存泄漏的地方,以下面为例: 上图的蓝色线表示位于Qt库,所以我们不需要操 阅读全文
posted @ 2018-05-02 17:23 诺谦 阅读(5302) 评论(0) 推荐(2) 编辑
摘要:QFile Qt中所有与IO相关的类都继承于QIODevice,继承图如下所示: 其中QFile类便是用于文件操作的类 在QT中,将文件当做一种特殊的外部设备对待(比如:串口,usb等就是外部设备) QT中,IO操作相关的函数接口,常用以下几种 打开设备 bool open(OpenMode mod 阅读全文
posted @ 2018-05-02 16:57 诺谦 阅读(5898) 评论(1) 推荐(6) 编辑
摘要:QMainWindow介绍 主窗口是与用户进行长时间交互的顶层窗口,比如记事本 主窗口通常是应用程序启动后显示的第一个窗口 QMainWindow是Qt中主窗口的基类,继承于QWidget QMainWindow和QWidget的区别 QMainWindow有自己的布局,您可以向其中添加QToolB 阅读全文
posted @ 2018-04-29 15:04 诺谦 阅读(3637) 评论(0) 推荐(2) 编辑
摘要:1.解决Win平台中文显示 1.1首先解决win平台上中文显示乱码问题 1)首先查看qt creator的编码格式 通过->编辑->选择编码 查看. 2)如果qt creator的编码格式是utf8,并且项目里的汉字是utf8类型时 需要添加头文件: 在main()函数加入: 3)如果qt crea 阅读全文
posted @ 2018-04-28 15:22 诺谦 阅读(3314) 评论(0) 推荐(1) 编辑
摘要:布局管理器简介 QT中提供了对界面组件进行布局管理的类,用于对界面组件进行管理, 能够自动排列窗口中的界面组件 窗口大小变化后,便会自动更新界面组件的大小。 布局管理器可以自定义,从而达到更加个性化界面布局的效果 布局管理器可以相互嵌套,完成所有常用的界面布局 QLayout是Qt中布局管理器的抽象 阅读全文
posted @ 2018-04-26 15:49 诺谦 阅读(5148) 评论(2) 推荐(1) 编辑