随笔分类 - C++
摘要:有些时候要给应用添加自定义的协议来通过浏览器唤起引用。 1. 注册协议 在Mac上的实现方式是在Info.plist中添加url schema来向系统注册自定义协议,在浏览器中访问注册过的协议,系统会打开app。 2. 捕获链接 只是注册协议并不能得到用户的具体请求,还需要通过代码来读取系统链接的打
阅读全文
摘要:在工作中遇到这样一个需求,将自己的窗口跟随目标窗口移动,而且总是置于目标窗口的下面。 Mac平台使用cocoa的代码,首先获取目标窗口的句柄id,并读取bounds,然后将自己的窗口设置为相同的数值。然后设置窗口顺序。 windows平台也是类似的
阅读全文
摘要:在Mac下引用第三方Framework时,需要在pro中添加rpath引用,共有3个要点: 1. 指定rpath路径, 2. 指定Framework路径, 3. 指定引用的Framework。 例如
阅读全文
摘要:如果要添加alias到IncludePath中,直接通过右键来创建alias是不可行的。 需要通过命令名来创建。例如:
阅读全文
摘要:问题 Windows系统提供了字体缩放功能,当字体缩放比率变大时,应用程序也需要做相应的调整来匹配显示结果。 Qt提供了一个熟悉来设置是否自动缩放。 但在启用这个属性后,只能是整数倍的缩放,比如125%是1倍,150%是2倍。这种效果是不能满足需求的。 解决方案 可以使用Windows提供的方法 来
阅读全文
摘要:读取txt文件时,很多时候无法获取文件的编码格式。如果直接进行使用,则有可能出现乱码。需要在使用前将其转为Unicode(Qt的默认编码格式)。 虽然实际的编码格式种类非常多,但平常主要使用的有GBK与UTF-8两种。可以依次尝试转换,如果转换出现无效字符则认为不是该种编码格式。
阅读全文
摘要:主要是通过设置属性实现。 下面的是基于Qt的代码,同时不显示窗口标题和icon。
阅读全文
摘要:Qt的默认的窗口和Windows原生相同,所有的功能也很完整。但启用了FramelessWindowHint标志之后,点击窗口底部的工具栏无法隐藏窗口。 解决的方案是增加一个标志 Qt::FramelessWindowHint
阅读全文
摘要:发布Qt程序的时候需要给程序添加图标和信息描述。 在Windows平台下,可以在pro文件中添加一个rc文件来描述软件的信息。 rc文件包含的描述信息如下 注意:rc文件的格式需要为无Bom头的UTF-8或者ANSI,包含Bom的UTF-8会导致编译失败。 如果在pro中仅仅添加一个icon文件,则
阅读全文
摘要:Qt的某些控件在输入文本的时候需要关闭输入法。如密码输入框输入密码的时候不希望显示输入法的输入条。 不能简单的通过QValidator来实现,因为此时仅仅修改了输入框接受的文本内容,输入法的输入条仍然会出现。 可以通过QWidget的InputMethod方法来实现,在应用程序查询控件是否支持输入法
阅读全文
摘要:<!--?xml version="1.0" encoding="UTF-8" standalone="no"?--> 3.1 继承构造函数 通过using关键字可以继承父类的构造函数。也可以通过显式定义构造函数来阻止继承。 3.2 委派构造函数,减少构造函数的书写 class Info { pub
阅读全文
摘要:基础内容 1.指针与引用的区别 任何情况下都不能使用指向空值的引用,使用时必须初始化。这使得使用引用时的效率比使用指针要高,因为在使用之前不需要测试它的合法性。 引用总是指向在初始化时指定的对象,以后不能改变。 重载某个操作符时,应该使用引用。 2.尽量使用C++风格的类型转换 static_cas
阅读全文
摘要:在Java中有一个很好用的Builder模式实现方法。此处使用C++仿照Java的版本实现Builder模式。 在C++中内部类和外部类是没有直接关系的,不能通过内部类访问外部类的私有对象也不能通过外部类访问内部类的私有对象。所以此处使用friend关键字来增强内部类对于外部类的访问,主要是访问外部
阅读全文
摘要:1.不要使用auto_ptr。 scoped_ptr,auto_ptr都是表达唯一所有权持有者的,区别在于,scoped_ptr的所有权是从一而终的,auto_ptr则允许用户以很自然的方式转交资源。两者的设计理念都保证同一时刻所有权持有者唯一。 auto_ptr的好处是显而易见的。比如你在用vec
阅读全文
摘要:先上效果图,实现方法就是设置WA_TranslucentBackground属性,并禁止窗口自动填充背景。#include #include #include class CMainWindow : public QMainWindow{public: CMainWindow(QWidget*...
阅读全文
摘要:lldb中默认没有对于QString的支持,需要自己添加。1. 在用户目录下创建~/.lldb文件夹,并在文件夹中创建`qstring.py`文件。qstring.py中内容为:import lldb def utf16string_summary(value, *rest): ...
阅读全文
摘要:为了避免主界面的卡顿等问题,所有的网络操作都应该放到工作线程中执行。这种需求带来的一个问题就是编码的不方便,如果要把工作的内容单独写到一个类或方法里面然后创建线程来执行会给编码和维护带来很大的麻烦。QT提供了一种线程池技术来解决这个问题,把一些需要在单独线程中执行的操作放到线程池中执行,可以避免手动...
阅读全文
摘要:策略(Strategy)模式Strategy pattern in LePUS3 (legend) 策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法,比如每个人都要“交个人所得税”,但是“在美国交个人所 得税”和“在中国交个人所得税”就有不同的算税方法。...
阅读全文

浙公网安备 33010602011771号