随笔分类 - QT
创建动态链接库
摘要:1 QFile fp; //要包含必要的头文件,这里省略 2 QDir(dir); 3 QString path("./"),filename("test.txt"); 4 QDebug qdebug(QtWarningMsg) ; 5 fp.setFileName(path+filename);
阅读全文
摘要:21 人赞同了该文章 本节内容主要讲解我对 Qt 属性系统的理解。官方文档参考 The Property System。 如何理解“属性系统”这个概念? 一般我们说一个类有什么属性,指的就是这个类有啥成员变量。比如 People 类中有个 int age 的私有成员变量,我们就可以说这个 Peopl
阅读全文
摘要:系统1:ThinkPad T570、Windows10、QT5.12.2(Qt Creater 4.8.2)一、动态库.dll的创建和调用1.在qtcreater中按如下步骤创建动态库,动态库名为mydll: 选择Library项目,C++库选择共享库:选择qt自带的kit:在工程中自动生成的myd
阅读全文
摘要:什么是库文件? 库文件是事先编译好的方法的合集。比如:我们提前写好一些数据公式的实现,将其打包成库文件,以后使用只需要库文件就可以,不需要重新编写。 Linux系统中: 1.静态库的扩展名为.a;2.动态库的扩展名为.so; 源代码到可执行程序的转换时需要经历如下图所示的过程: 1.编译是指把用高级
阅读全文
摘要:强制类型转换 1. static_cast 2. dynamic_cast 3. const_cast 4. reinterpret_cast 5. 为什么要需要四种类型转换? 1. static_cast 实现C++种内置基本数据类型之间的相互转换,不能用于两个不相关类型进行转换。 例如:将整形数
阅读全文
摘要:1.编写一个程序判断一个变量是不是指针? 拾遗-C++中仍然支持C语言中的可变参数函数-C++编译器的匹配调用优先级1.重载函数2.函数模板3.变参函数 #include <iostream> #include <string> using namespace std; class Test { p
阅读全文
摘要:类型识别 C++中如何得到动态类型? #include <iostream> #include <string> using namespace std; class Base { public: virtual string type() { return "Base"; } }; class D
阅读全文
摘要:C++中的异常处理(下) array.h #ifndef _ARRAY_H_ #define _ARRAY_H_ #include <stdexcept> using namespace std; template < typename T, int N > class Array { T m_ar
阅读全文
摘要:C++中的异常处理(中) 为什么要在catch中重新抛出异常? #include <iostream> #include <string> using namespace std; void Demo() { try { try { throw 'c'; } catch(int i) { cout
阅读全文
摘要:C++内置了异常处理的语法元素try... catch ...-try语句处理正常代码逻辑-catch语句处理异常情况-try语句中的异常由对应的catch语句处理 try { double r = divide(1,0); } catch(...) { cout << "Divided by ze
阅读全文
摘要:异常的概念-程序在运行过程中可能产生异常-异常(Exception)与Bug的区别 异常是程序运行时可预料的执行分支 Bug是程序中的错误,是不被预期的运行方式 异常(Exception)和Bug的对比-异常 运行时产生除0的情况 需要打开的外部文件不存在 数组访问时越界-Bug 使用野指针 堆数组
阅读全文
摘要:单例模式需求的提出在架构设计时,某些类在整个系统生命周期中最多只能有一个对象存在(Single Instance)如何定义一个类,使得这个类最多只能创建一个对象?明确创建一个对象,必然会调用构造函数。要控制类的对象数目,必须对外隐藏构造函数 思路:-将构造函数的访问属性设置为private-定义in
阅读全文
摘要:工具/原料 QT designer 方法/步骤 1 首先创建一个Manwindow窗口 拖一个label到窗口上 把文字去掉,然后把label放大 找到stylesheet一栏 点击右边那个...会弹出来一个窗口,再点击添加资源的下拉框,如图 点击那支笔,会出来个框 点击新建资源文件,如图,保存一下
阅读全文
摘要:本篇博客将深入讨论信号与槽,重点讨论信号与槽的连接方式。信号与槽的连接方式还有什么值得我们注意的地方吗?之前是如何连接信号与槽的呢?通过connect函数将指定的信号连接到指定的槽函数上面,接下来将要发生的事情就是信号一旦被发射,相应的槽函数就会被调用。这是我们最直观的认识。每次调用connect函
阅读全文
摘要:多线程中的信号与槽(下) 可以看到void TestThread::run() end...没有被调用 有趣的问题:如果线程体函数中开启了事件循环,线程如何正确结束?QThread::exec()使得线程进入事件循环-事件循环结束前,exec()后的语句无法执行-quit()和exit()函数用于结
阅读全文
摘要:令人不解的问题: 当槽函数是线程类的成员时,为什么依然不在本线程内被调用执行? 隐藏的问题:对象依附于哪一个线程?对象的依附性与槽函数执行的关系?对象的依附性是否可以改变? 对象依附于哪个线程?默认情况下,对象依附于自身被创建的线程例如:对象在主线程(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中也需要两个临界资源
阅读全文

浙公网安备 33010602011771号