随笔分类 - Qt实验分析
第六十七课、基础图形绘制(中)------------------狄泰软件学院
摘要:一、基础图形绘制 1、Qt图形系统中的坐标系 (1)、物理坐标系(设备坐标系) A、原点(0,0)在左上角的位置,单位:像素(点) B、x坐标向右增长,y坐标向下增长 (2)、逻辑坐标系(如数学中的坐标系) A、数学模型中的抽象坐标系,单位由具体问题确定 B、坐标的增长方向由具体问题决定 2、一些事
第五十八课、自定义模型类(上)------------------狄泰软件学院
摘要:一、自定义模型类 1、QStandardItemModel是一个通用的模型类 (1)、能够以任意的方式组织数据(线程、非线性) (2)、数据组织的基本单位为数据项(QStandardItem) (3)、每一个数据项能够存储多个具体数据(附加数据角色) (4)、每一个数据项能够对数据状态进行控制(可编
第五十七课、模型视图设计模式(下)------------------狄泰软件学院
摘要:一、不同的视图显示同一个模型中的数据 1、Qt中标准模型定义(例子中使用表格模型) (1)、获取虚拟根节点 (2)、动态从堆空间申请并创建三个数据项 (3)、分别往三个数据项中放入数据 (4)、将数据项放到模型中 #ifndef MAINWINDOW_H #define MAINWINDOW_H #
第五十六课、模型视图设计模式(中)------------------狄泰软件学院
摘要:一、模型视图设计模式 1、模型视图设计模式 (1)、模型定义标准接口(成员函数)对数据进行访问(例子中m_fileMode.data(root)等) (2)、视图通过标准接口获取数据并定义显示方式 (3)、模型使用信号与槽的机制通知视图数据变化(如上节课的动态显示) (4)、模型中的数据都是以层次结
第五十五课、模型视图设计模式(上)------------------狄泰软件学院
摘要:一、模型视图设计模式 1、模型视图设计模式的核心思想 (1)、模型(数据)与视图(显示)相分离 (2)、模型对外提供标准接口存取数据(不关心数据如何显示) (3)、视图自定义数据的显示模式(不关心数据如何组织存储) 2、模型视图模式的直观理解 3、模型视图的工作机制 (1)、当数据发生改变时:模型发
第八十五课、多线程与界面组件的通信(下)------------------狄泰软件学院
摘要:一、多线程与界面组件的通信 1、子线程更改界面组件状态的本质 (1)、子线程发射信号通知主线程界面更新请求 (2)、主线程根据具体信号以及信号参数对界面组件进行修改 2、另一种子线程通知主线程的方式 :发送自定义事件 (1)、自定义事件用于描述界面更新细节 (2)、在主窗口类中重写事件处理函数eve
第八十四课、多线程与界面组件的通信(上)------------------狄泰软件学院
摘要:一、多线程与界面组件的通信 1、GUI设计原则 (1)、所有界面组件的操作都只能在主线程中完成 (2)、因此,主线程也叫UI线程 2、子线程对界面组件进行更新的解决方案 信号与槽 (1)、在子线程类中定义界面更新信号(updateUI) (2)、在窗口类中定义更新界面组件的槽函数(setInfo)
第八十三课、另一种创建线程的方式------------------狄泰软件学院
摘要:一、历史的痕迹 1、注意 (1)、面向对象的程序设计实践的早期工程中习惯于通过继承的方式扩展系统的功能 2、现代软件架构技术 (1)、尽量使用组合的方式实现系统功能 (2)、代码中仅体现需求中的继承关系 3、通过继承方式实现新的线程类的事实 (1)、线程子类仅保护void run()函数不同,接口部
第八十二课、线程的生命周期------------------狄泰软件学院
摘要:一、线程的生命周期 1、一个工程中的实际 (1)、c++对象有生命周期 (2)、线程也有生命周期 (3)、工程实践中的经验准则要想办法保证:线程对象(QThread对象)的生命周期 > 对应线程的生命周期 问题代码:在栈中定义局部线程对象 t.start()后继承向下执行,然后线程对象销毁,里面的成
第八十一课、信号与槽的连接方式------------------狄泰软件学院
摘要:一、深入信号与槽的连接方式 1、深入信号与槽的连接方式 (1)、Qt::DirectConnection : 立即调用 (2)、Qt::QueuedConnection : 异步调用 (3)、Qt::BlockingQueuedConnection : 同步调用 (4)、Qt::AutoConnec
第八十课、多线程中的信号与槽(下)------------------狄泰软件学院
摘要:一、线程体函数开启了事件循环,线程如何正常结束 1、QThread::exec()使得线程进入事件循环 (1)、事件循环结束前,exec()后的语句无法执行 (2)、quit()和exit()函数用于结束事件循环 (3)、quit() < >exit(0),exec()的返回值由exit()参数决定
第七十九课、多线程中的信号与槽(中)------------------狄泰软件学院
摘要:一、对象的依附性 1、对象依附于哪个线程? (1)、默认情况下,对象依附于自身被创建的线程(如对象在主线程main()函数)中被创建,则依附于主线程) 2、对象的依附性与槽函数执行的关系? (1)、默认情况下,槽函数在对象所依附的线程中调用执行 3、对象的依附性是否可以改变? (1)、QObject
第七十八课、多线程中的信号与槽(上)------------------狄泰软件学院
摘要:一、多线程中的信号与槽 1、QThread类拥有发射信号和定义槽函数的能力(因为QThread继承自QObject) (1)、关键信号 A、void start():线程开始运行时发射该信号 B、void finished():线程完成运行时发射该信号 C、void terminated():线程被
银行家算法------------------狄泰软件学院
摘要:恢复内容开始 一、银行家算法 1、问题描述 (1)、研究银行家如何将总数 一定的资金,安全 地借给若干个顾客,使顾客既能满足对资金的需求, 也使银行家可以收回自己的全部资金,不至于破产 2、以下限制条件 (1)、每个顾客在借款前必须提前说明所需资金总额 (2)、每次借钱都是以一个单位进行(如,一个单
第七十六课、多线程间的互斥(下)------------------狄泰软件学院
摘要:一、多线程间的互斥 1、程序的临界资源与线程锁的数量关系 (1)、一般性原则:每一个临界资源都需要一个线程锁进行保护 2、死锁的概念 (1)、线程间相互等待资源而造成彼此无法继承执行 3、发生死锁的条件 (1)、系统中存在多个临界资源且临界资源不可抢占(每次只有一个线程使用) (2)、线程需要多个临
第七十五课、多线程间的互斥(上)------------------狄泰软件学院
摘要:一、多线程间的互斥 1、生产消费者问题 (1)、有n个生产者同时制造产品,并把产品放入仓库中 (2)、有m个消费者同时从仓库中取出产品 (3)、规则 A、当仓库未满,任意生产者可以存入产品 B、当仓库未空,任意消费者可以取出产品 2、生活中的线程互斥例子 标示牌用于指示是否可用: 红绿灯标识十字路口
第七十四课、多线程间的同步------------------狄泰软件学院
摘要:一、多线程间的同步 1、多线程编程的本质 (1)、并发性是多线程编程的本质 (2)、在宏观上,所有线程并行执行 (3)、多个线程间相互独立,互不干涉 2、特殊情况下,多线程存在依赖 煮菜和煮饭这两个线程结束后,才能进行吃饭的线程 3、同步的概念 (1)、在特殊情况下,控制多线程间的相对执行顺序 (2