随笔分类 - Qt
摘要:一个工程中的实际问题:C++对象有生命周期;线程也有生命周期;QThread对象的生命周期与对应的线程的生命周期是否一致?
阅读全文
摘要:本篇博客将深入讨论信号与槽,重点讨论信号与槽的连接方式。信号与槽的连接方式还有什么值得我们注意的地方吗?之前是如何连接信号与槽的呢?通过connect函数将指定的信号连接到指定的槽函数上面,接下来将要发生的事情就是信号一旦被发射,相应的槽函数就会被调用。这是我们最直观的认识。每次调用connect函
阅读全文
摘要:可以看到void TestThread::run() end...没有被调用 有趣的问题:如果线程体函数中开启了事件循环,线程如何正确结束?QThread::exec()使得线程进入事件循环-事件循环结束前,exec()后的语句无法执行-quit()和exit()函数用于结束事件循环-quit()等
阅读全文
摘要:令人不解的问题: 当槽函数是线程类的成员时,为什么依然不在本线程内被调用执行? 隐藏的问题:对象依附于哪一个线程?对象的依附性与槽函数执行的关系?对象的依附性是否可以改变? 对象依附于哪个线程?默认情况下,对象依附于自身被创建的线程例如:对象在主线程(main()函数)中被创建,则依附于主线程 in
阅读全文
摘要:值得思考的问题: 线程类的信号与槽 实验一: TestThread.h #ifndef TESTTHREAD_H #define TESTTHREAD_H #include <QThread> class TestThread : public QThread { Q_OBJECT protecte
阅读全文
摘要:一个事实 在实际的项目开发中,大多数时候是直接将组件中预定义的信号连接到槽函数,信号发射时槽函数被调用。 深度的思考 信号是怎么来的?又是如何发射的? Qt中信号(SIGNAL)的本质 —信号只是一个特殊的成员函数声明 函数的返回值是void类型 函数只能声明不能定义 —信号必须使用signals关
阅读全文
摘要:信号量的概念 -信号量是特殊的线程锁 -信号量允许N个线程同时访问临界资源 -Qt中直接支持信号量(QSemaphore) 线程锁是用来保护临界资源的,每个线程锁每次只允许一个线程进行访问临界资源。 QSemaphore sem(1)定义了一个信号量,并且N的值为1,意味着一次只允许一个线程去访问临
阅读全文
摘要:问题:程序有多少临界资源?需要多少线程锁? 临界资源是没有任何的限制 一般性原则:每一个临界资源都需要一个线程锁进行保护(一 一对应) 定义了两把线程锁,显然是为了保护两个临界资源而定义的。在线程A中需要两个临界资源才能保证工作,这两个临界资源对应的线程锁就是m1,m2。在线程B中也需要两个临界资源
阅读全文
摘要:值得思考的问题: 多个线程除了在时序上可能产生相互依赖,在其他方面是否也可能产生相互依赖呢? 生产消费者问题:-有n个生产者同时制造产品,并把产品存入仓库中 -有m个消费者同时需要从仓库中取出产品 -规则: 当仓库未满,任意生产者可以存入产品 当仓库未空,任意消费者可以取出产品 编程实验:生产消费者
阅读全文
摘要:串行解决方案示例代码: #include <QCoreApplication> #include <QThread> #include <QDebug> #include <QObject> /* sum(n)=> 1 + 2 + 3 + ..... + n sum(1000)= ? [1,1000
阅读全文
摘要:QThread编程示例 class MyThread: public QThread //创建线程类 { protected: void run() //线程入口函数 { for(int i=0; i<5; i++) { qDebug() << objectName() << ":" << i; s
阅读全文
摘要:什么是程序?什么是进程? 程序和进程有什么关系? 程序是计算机存储系统中的数据文件 进程的概念 -广义概念 程序关于某个数据集合一次运行活动 -狭义概念 程序被加载到内存中执行后得到的进程 程序和进程的区别 -程序是硬盘中静态的文件 存储系统中的一段二进制二进制表示 -进程是内存中动态的运行实体 数
阅读全文
摘要:模态对话框(QDialog::exec())-显示后无法与父窗口进行交互-是一种阻塞式的对话框调用方式非模态对话框(QDialog::show())-显示后独立存在可以同时与父窗口进行交互-是一种非阻塞式的对话框调用方式 一般情况下-模态对话框用于必须依赖用户选择的场合(80%) 消息提示,文件选择
阅读全文
摘要:对话框是与用户进行简短交互的顶层窗口QDialog是Qt中所有对话框窗口的基类QDialog继承于QWidget是一种容器类型的组件 QDialog的意义-QDialog作为一种专用的交互窗口而存在-QDialog不能作为子部件嵌入到其它容器中-QDialog是定制了窗口式样的特殊的QWidget
阅读全文
摘要:Qt对象之间可以存在父子关系-每一个对象都保存有它所有子对象的指针-每一个对象都有一个指向其父对象的指针 parent是一个对象,它里面有一个子对象指针链表,里面的每个指针指向了一个子对象。这些子对象也存有指向parent的指针 Qt中的对象如何指定它的父对象呢?当指定Qt对象的父对象时-其父对象会
阅读全文
摘要:界面与逻辑基本程序架构一般包含:—用户界面模块(UI) 接受用户输入及呈现数据—业务逻辑模块(Business Logic) 根据用户需求处理数据 用户界面与业务逻辑如何交互? 基本设计原则功能模块之间需要进行解耦核心思想:强内聚,弱耦合-每个模块应该只实现单一的功能-模块内部的子模块只为整体的单一
阅读全文
摘要:QCalculatorDec.h QCalculatorDec.cpp
阅读全文
摘要:中缀表达式转后缀表达式的过程类似编译过程——四则运算表达式中的括号必须匹配——根据运算符优先级进行转换——转换后的表达式中没有括号——转换后可以顺序的计算出最终结果 这是某位伟人研究出的算法,在这里我们直接拿来用就可以。 转换过程:——当前元素e为数字:输出——当前元素e为运算符:1.与栈顶运算符进
阅读全文
摘要:计算机如何读懂四则运算表达式?9.3 + (3 - -0.11) * 5 后缀表达式人类习惯的数学表达式叫做中缀表达式另外,还有一种将运算符放在数字后面的后缀表达式5 + 3——> 5 3 +1 + 2 * 3 ——> 1 2 3 * +9 + (3 - 1) *5 ——> 9 3 1 - 5* +
阅读全文
摘要:标准库STL Qt VS STL Qt中的字符串类——采用Unicode编码,意味着可以直接支持韩文、日文、中文等等。而STL中的string类不支持Unicode编码,只支持ascII码。——使用隐式共享技术来节省内存和不必要的数据拷贝——跨平台使用,不必考虑字符串的平台兼容性 注意:隐式共享技术
阅读全文
浙公网安备 33010602011771号