![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Qt
文章平均质量分 70
Trump_zhai
天涯何处觅知音
展开
-
学习日记之解释器模式和Effective C++
解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。(1),如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言的句子。这样可以构建一个解释器,该解释器通过解释这些句子来解决该问题。(2),当一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象的语法树时,原创 2014-08-15 21:55:33 · 919 阅读 · 0 评论 -
QtCreator源码分析—1.结构图
转载 2013-11-14 11:30:38 · 4650 阅读 · 1 评论 -
QtCreator源码分析 -3.插件管理系统
首先,我们先看看QT的插件系统。QT的插件模型类似于在COM本质论前面部分内容里描述的模型(不过还没有去看具体的源码,实现机制是否一样还不确定)。动态链接库通过继承一个简单接口的纯虚类,在需要的时候动态载入,然后通过纯虚类的接口函数进行进一步的访问。从而为动态链接库提供一个统一的发现方式。 在QT的插件系统中,提供给对外使用的主要有IPlugin、PluginManager、Plugi转载 2013-11-14 11:34:31 · 5632 阅读 · 1 评论 -
QtCreator源码分析—2.启动主程序
QtCreator采用插件体系结构。主程序启动插件管理器(PluginManager),再通过插件管理器加载其插件,QtCreator的所有功能均使用插件实现。 我们先来分析主程序对插件管理器的主要操作:int main(int argc, char **argv){ ...... ExtensionSystem::PluginManager pluginManager;//生转载 2013-11-14 11:31:44 · 2824 阅读 · 1 评论 -
QString 文本长度判断
QString 如何保证length()返回的长度 在中字符串是以 Unicode 方式编码的,所以,无论中英文都算的长度为 1。想要取得英文长度为 1 中文长度为 2 的总长度:QString s = "ab中文";int length = s.length(); //length = 4;length = s.toLocal8Bit().length(); //原创 2013-11-13 13:54:02 · 8099 阅读 · 0 评论 -
QTextEdit限制文本长度
QString textContent = this->toPlainText(); int length = textContent.count(); int maxLength = maxLen; // 最大字符数 if(length > maxLength) { int position = this->textCursor().po原创 2013-11-12 10:13:34 · 7374 阅读 · 0 评论 -
自定义自适应内容的Label
Qt QLabel 省略号原创 2013-11-11 17:16:44 · 4777 阅读 · 0 评论 -
Qt项目编码详解续
长期以来,很多人都清楚,一旦C++源码中直接使用了中文,这样的源码想要跨平台(I18N)会非常困难。随着:Windows下:MSVC2010成为主流 Linux下:GCC升级到4.6C++中的中文问题 才算有了一个比较优雅的、跨平台的Workaround。(本文讨论编译器范围:GCC4.6+, MSVC2010sp1+ 。本文属于QString系列,但暂不涉及QString)转载 2013-11-11 09:45:19 · 3182 阅读 · 0 评论 -
Qt5项目编码
QTextCodec中的setCodecForTr等终于消失了 (Qt5) ,在Qt论坛上,不少用户都对去掉这两个函数表示特别的不了解。为什么会这样?我想多少能说明不少用户对C++中源码字符集和执行字符集的不太了解,从而造成对这种函数的依赖或误用。今天,随着Change QString's default codec to be UTF-8 进入Qt5的master分支,我们总算可转载 2013-11-11 09:47:39 · 1554 阅读 · 0 评论 -
QtCreator源码分析—4.核心插件
在QtCreator主程序中特别对核心插件,命名为Core的插件,进行了检查。核心插件也是QtCreator的主界面和入口,下面对核心插件进行分析。1、插件接口类插件接口类至少需要实现initialize和extensionsInitialized两个函数,两个函数分别在插件初始化和运行时调用。两个接口函数在核心插件中的实现bool CorePlugin::initialize(con转载 2013-11-14 11:35:22 · 2694 阅读 · 0 评论 -
关于使用DirectX在QGraphicsView上播放视频的探索
最近注意到有人遇到了一个我半年前遇到的问题,我将半年前自己的探索写出来供大家参考,希望对大家有帮助,如果有错误的地方希望不吝指教。如果解决了问题,请告诉我。大约半年前遇到了此问题,使用DirectX在QGraphicsView上播放视频。由于当时项目比较急,一直没有解决。后来就换了QMdiarea代替了QGraphicsView框架,实现了directx通过窗口句柄(即WInId)播放视频原创 2013-11-13 20:19:41 · 5240 阅读 · 5 评论 -
学习日记之享元模式和Effective C++
享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象。(1),享元模式可以避免大量非常相似的开销。在程序设计中,有时需要生成大量细粒度的类实例来表示数据。如果能发现这些实例除了几个参数外基本上都是相同的,有时就能大幅度地减少需要实例化的类的数量。如果能把这些参数移到类的外面,在方法调用时将他们传递进来,就可以通过共享大幅度减少实例的数目。(2),如果一个应用使用了大量的对原创 2014-08-14 22:01:15 · 1057 阅读 · 0 评论 -
学习日记之职责链模式和Effective C++
职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着该条链传递该请求,直到有一个对象处理它为止。(1),当客户提交一个请求时,请求时沿着链传递直到有一个 ConcreteHandler 对象负责处理它。(2),接收者和发送者都没有对方的明确信息,切链中的对象自己也不知道链的原创 2014-08-12 21:45:54 · 865 阅读 · 0 评论 -
学习日记之中介者模式和Effective C++
中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。(1),中介者模式很容易在系统中应用,也很容易在系统中误用。当系统出现多对多交互复杂的对象群时,不要急于使用中介者模式,而要反思你在系统的设计上是不是合理。(2),中介者的出现减少了各个对象的耦合,使得可以独立地改变和复用各个对象和中原创 2014-08-13 21:42:48 · 906 阅读 · 0 评论 -
学习日记之大话设计模式和Effective C++大结局
第一次潜心学习一个月时间,看完了《大话设计模式》和《Effective C++》两本书,两本书的前半部分都比较容易,但是后期的部分,比如:C++的内存,异常和模板的知识就很难理解了。也许和自己很少用异常处理和模板的关系吧。自己坚持了一个月,无论如何,这两本书给我带来了很多新的知识,发现了自己的不足。接下来打算继续看《C++ Templates》这本书,希望能弥补自己在模板编程方便的不足和为以后研究原创 2014-08-18 21:41:05 · 1274 阅读 · 0 评论 -
关于qtcreator+vs2008+CDB调试太卡的问题研究
Qt Creator VS2008 CDB 调试原创 2014-04-17 20:55:26 · 6849 阅读 · 3 评论 -
Qt技术优势
1. Qt这个C++的图形库由Trolltech在1994年左右开发。它可以运行在Windows,Mac OS X, Unix,还有像Sharp Zaurus这类嵌入式系统中。Qt是完全面向对象的。 2. Qt的架构明显是经过精心设计的面向对象的。Qt因此在命名,继承,类的组织等方面保持了优秀的一致性。你只需要提供唯一一个方法的参数,仅此一个。在不同的类中调用方式也是有很强的连贯性。返回值原创 2014-01-13 16:40:04 · 3930 阅读 · 0 评论 -
Qt GPL, LGPL & Commercial License
Qt 4.5中提供了三种授权协议,分别是GPL, LGPL和Commercial,可能很多人要问,为什么同样的一个产品要提供三种授权协议,什么情况下使用什么的样的授权协议最合适?在这里我就大致解释一下:GPL全称是The GNU General Public License,是目前大多数的GNU程序和超过半数的自由软件使用的许可协议。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的转载 2014-01-10 14:54:36 · 1511 阅读 · 0 评论 -
Qt LGPL详解
最近一直在学习 Qt。Qt 有两个许可证:LGPL 和商业协议。这两个协议在现在的 Qt 版本中的代码是完全一致的(潜在含义是,Qt 的早期版本,商业版的 Qt 通常包含有一些开源版本所没有的库,比如 QtSingleApplication 这个库)。所以现在对于普通开发人员和部分商业公司来说,使用 LGPL 版本的 Qt 可以节省很大的开销。这两个版本最大的区别在于,前者是免费的,后者是收费的。转载 2014-01-10 15:27:03 · 2120 阅读 · 0 评论 -
Qt项目编码详解
首先呢,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString。很简单的问题,"我是中文"这样写的时候,它是传统的 char 类型的窄字符串,我们需要的只不过是通过某种方式告诉QString 这四个汉字采用的那种编码。而问题一般都出在很多用户对自己当前的编码没太多概念,于是一个简 单转载 2013-11-11 09:35:55 · 1827 阅读 · 0 评论 -
Qt 如何把版本信息加入应用程序
You can use the qmake variable VERSION to add version information to your library or application. See the documentation on the qmakeVERSION variable [doc.qt.nokia.com]When creating a .dll with a翻译 2013-11-08 17:13:52 · 1802 阅读 · 0 评论 -
QcomboBox item style
The solution is to create a ListView objectset its stylesheetuse it as the view of the ComboBoxHere is how: int main(int argc, char *argv[]) { QApplication app(argc, argv); QMai原创 2013-11-21 21:33:20 · 2214 阅读 · 0 评论 -
Qt QSS 美化(换肤必备)
本人原创,转载请注明出处 代码很简单,没什么需要解释的,有不足之处欢迎指正。 /*************************************************************************************************************Title: PlatForm Qss FileCre原创 2013-10-12 19:30:47 · 12436 阅读 · 3 评论 -
Qt核心剖析:moc
前面我们说过,Qt 不是使用的“标准的” C++ 语言,而是对其进行了一定程度的“扩展”。这里我们从Qt新增加的关键字就可以看出来:signals、slots 或者 emit。所以有人会觉得 Qt 的程序编译速度慢,这主要是因为在 Qt 将源代码交给标准 C++ 编译器,如 gcc 之前,需要事先将这些扩展的语法去除掉。完成这一操作的就是 moc。moc 全称是 Meta-Object Com转载 2013-10-12 18:56:21 · 873 阅读 · 0 评论 -
Qss 阴影边框
阴影边框很常见,诸如360以及其他很多软件都有类似效果,了解CSS3的同学们应该都知道box-shadow,它就是来设定阴影效果的,那么Qt呢?看过一些资料,说是QSS是基于CSS2的,既然如此,box-shadow是基于CSS3的!那么Qt定然就用不了! 搜了一些资料,每张图片都做成阴影效果的固然不可能,直接舍弃(即使可以,也不采纳)。如果实时的去画图,效率太低,最后选择了拼图的方转载 2013-10-10 19:35:48 · 5959 阅读 · 0 评论 -
Linux 平台 Qt 与 qtcreator配置全过程
Linux Environment For hfpgaide① .Qt Environment:1. tar qt-everywhere-opensource.tar.gz2. QGtkStyle: When a scrollbar appears it will crash under CentOS 5.7 ,so patchqt4-cfs原创 2012-12-28 16:51:57 · 3642 阅读 · 0 评论 -
linux makefile教程
概述——转 :十年磨一剑的博客什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你转载 2012-12-27 11:20:58 · 1570 阅读 · 0 评论 -
Qt 静态库编译方法
http://blog.sina.com.cn/s/blog_64053138010131lp.html转载 2012-12-27 11:16:42 · 658 阅读 · 0 评论 -
有没有人知道如何用64位机器编译32位的Qt库
有没有人知道如何用64位机器编译32位的Qt库原创 2012-12-26 17:58:08 · 3093 阅读 · 1 评论 -
debug_and_release
1、如何判断生成的可执行文件是debug版还是release版?linux下用file xxx 2、如何生成debug版或release版?前提: 在生成Qt库时(./configure)已经配置为 + -debug-and-release如果配置为./configure -release,则只能生成release版(附简单配置说明如下 -release ..转载 2012-12-25 15:21:21 · 1802 阅读 · 0 评论 -
使用Qt的QObject函数实现二叉树或多叉树
使用Qt的QObject类实现多叉树 最近研究骨骼动画,需要显示人物模型的骨骼结构,说到骨骼结构,在计算机图形学中通常用树状结构来描述,在一篇介绍骨骼动画的文章中也谈到了树状结构。树是一种数据结构,它通常通过链式结构的形式来存储,能够直观地表达自然界的层次关系。正是因为树的这些特点,它非常适合渲染骨骼。 接下来就是如何实现树状结构了,虽然我以前实现过翻译 2013-10-12 18:07:46 · 3396 阅读 · 1 评论 -
警惕 CONFIG+=ordered
致qmake的用户:公共服务公告。如果您使用CONFIG + =ordered,请立刻停止。如果你不这样做,我会追杀你。我答应上帝,我会。我们根本没有理由使用这个,永远都不会。有两方面的原因,会让它出现在项目文件中:1. 你不知道你在做什么,你从别的地方复制2. 你有一个目标,需要建立另一个目标后才可以构建如果你属于第一类,那么我希望你现在改变,因为通过使用CONFIG +翻译 2013-10-28 11:39:37 · 5678 阅读 · 1 评论 -
Qt 已注册元对象类型
Qt内置了一部分元对象类型,如果下列不包含的元对象,在信号槽或者QVariant中必须注册。注册方法:int id = qRegisterMetaTypeMyStruct>();原创 2013-11-20 10:55:06 · 2388 阅读 · 0 评论 -
Qt项目管理
转自:dbzhang800采用一个非常简单的Qt程序作为例子,通过pro文件的合理编写,使得我们的程序在使用动态库的时候,几乎可以忽略掉动态库的存在。它包括3部分:生成动态库使用动态库生成与使用的自动化测试环境:ubuntu 11.04 + Qt 4.7.2windows vista + Qt 4.7.0(MSVC2008)windows vista +转载 2013-11-20 09:28:56 · 1807 阅读 · 0 评论 -
NSIS打包发布Qt程序
转自大神dbzhang800.一个Qt4程序安装(发布)后它应该有如下的结构(可参考 Qt 程序在 windows 下的发布 ):|-- sample.exe|-- QtCore4.dll|-- QtGui4.dll|-- imageformats/| |-- qjpeg4.dll接下来我们使用nsis,来制作一个实现这个功能的安装程序(并稍作完善)转载 2013-11-16 20:06:21 · 1572 阅读 · 1 评论 -
Qt 发布
转自大神dbzhang800.这个问题,其实 Qt 的 manual 中解释的已经比较清楚了。下面是我根据自己的理解和实验后写的东西,希望比Qt文档容易理解一点。另外:你可能对 Qt 插件学习(一) 感兴趣。如果需要制作安装程序,请访问 NSIS学习笔记(以Qt4程序打包为例)下面不涉及静态编译(静态编译可以看看这儿),只包含动态编译(也就是Qt默认的情况),主要又分转载 2013-11-16 20:01:27 · 1311 阅读 · 0 评论 -
Qt 内存管理
转自大神dbzhang800.在C++中学习过程中,我们都知道:delete 和 new 必须 配对使用(一 一对应):delete少了,则内存泄露,多了麻烦更大。Qt作为C++的库,显然是不会违背C++的前述原则的。可是:在Qt中,我们很多时候都疯狂地用new,却很少用delete,缺少的 delete 去哪儿了?!注:本文暂不涉及智能指针(smart转载 2013-11-16 18:58:12 · 1295 阅读 · 0 评论 -
中文字符串排序解决方案
字符串排序 中文排序 GBK编码原创 2013-11-15 14:01:20 · 2551 阅读 · 1 评论 -
sqlite3基础 (Qt版本)
初始化sqlite3 (创建表) QString url = QDir::currentPath() + QString::fromLocal8Bit("/Msg.db"); bool isExsiting = false; QFileInfo file(url); if (!file.absoluteDir().exists()) {原创 2013-10-29 20:27:59 · 1850 阅读 · 0 评论 -
XP 项目输出链接库搜索路径
VS 配置 /verboseQt LIBS += /verbose \原创 2013-10-23 17:43:12 · 1004 阅读 · 0 评论