按照我们之前的习惯,我们会按照 libs.pro 的SUBDIRS部分的顺序进行阅读。前面一章我们读过 aggregation 子项目,下面则要开始重中之重,extensionsystem。我们曾经介绍过,Qt Creator 的核心是一个插件系统。Qt Creator 的所有功能都是以插件的形式提供的。这个插件系统的实现,就是 extensionsystem。在这一阶段,我们将了解到 Qt Cr ...

9 评论 4 次阅读

前面一章我们已经来到了 libs 目录。libs.pro 的SUBDIRS部分,第一个子项目是 aggregation。因此,我们的代码阅读也就从这里开始入手。 打开 aggregation 目录,按照之前的经验,还是从 aggregation.pro 开始。 这个文件没有那么复杂。但是它的第一行还是把我们带到了另外一个文件,qtcreatorlibrary.pri。qtcreatorlibrar ...

0 个评论 2 次阅读

前面我们已经学习了 qtcreator.pro 和 qtcreator.pri 两个文件的代码。在 qtcreator.pro 中有这么一段代码: 这意味着,Qt Creator 会按照SUBDIRS定义的顺序编译。所以,下面我们需要从 src 目录开始。打开 src 目录,有这么几个目录和文件。 我们从最根本的 src.pro 开始。当TEMPLATE被定义为subdirs时,Qt 会去找SUB ...

0 个评论 2 次阅读
Qt

再见,Q_FOREACH!

by 豆子

原文地址:https://www.kdab.com/goodbye-q_foreach/ Q_FOREACH(有时也会被称为foreach)将在不久的将来被废除,有可能是在 Qt 5.9。从 Qt 5.7 开始,你可以使用QT_NO_FOREACH宏定义来确保代码中没有依赖Q_FOREACH。【译注:这里应该是说,在 .pro 文件中添加DEFINES += QT_NO_FOREACH定义】 你可 ...

3 评论 2 次阅读

上一章我们已经分析过项目文件 qtcreator.pro。我们看到,qtcreator.pro 中很多重要的功能都使用了来自 qtcreator.pri 中定义的函数或者变量。本章我们就来看看 qtcreator.pri 是怎么写的。 第一行,如果存在QTCREATOR_PRI_INCLUDED,则抛出错误。下面一行则设置了QTCREATOR_PRI_INCLUDED。这两行类防止将 q ...

7 评论 3 次阅读

当我们准备好 Qt Creator 的源代码之后,首先进入到它的目录,来看一下它的源代码目录有什么奥秘。 这里一共有 9 个文件夹和 9 个文件。我们来一一看看它们都是干什么用的。 .git: 版本控制 git 的隐藏目录,这与 Qt Creator 代码没有关系。 bin: 生成 Linux 平台 shell 脚本。 dist: 安装文件配置信息和版本更新记录。 doc: 生成 doxygen ...

7 评论 3 次阅读

要学习 Qt Creator 的源代码,首先要获取它的源代码。与 Qt 不同,前者在安装时可以选择是否安装源代码,但是 Qt Creator 的源代码并不是与可执行文件一起发布的。我们需要自己下载。 获取 Qt Creator 的源代码有两种方式:下载 zip 包以及使用 git clone。 Qt Creator 的源码 zip 包就在 Qt 的下载页面。我们可以打开 Qt 开源版下载页面(商业 ...

3 评论 2 次阅读

针对 Qt Creator 源代码的分析已经计划了很长时间,但是一直没有进行。至于为什么要读源代码,这个问题已经不需要我们去回答。源码之前,了无秘密。站在巨人的肩膀上,我们也会比之前高那么一点点。 我们可以去读 Qt 的源代码。这对于深入学习 Qt 是不可或缺的,但是,对于初学者以及更多的普通开发者而言,直接读 Qt 的源代码还是比较困难的。首先,Qt 是一个跨系统的通用库,很多有关操作系统层面的 ...

1 个评论 2 次阅读

前面我们已经完成了 todo 的几个状态。下面我们开始针对这些状态添加一些便捷操作。这也是 todomvc 应用规范所要求的。 在输入框左边有一个箭头,这是一个 checkbox。当点击这个箭头时,所有 todo 都应该设置为完成状态;再次点击则将所有 todo 恢复为未完成状态。需要注意的是,这个 checkbox 的选择与下面 todo 的操作息息相关:当一个个将所有 todo 手动完成后,该 ...

1 个评论 0 次阅读

下面我们继续实现 todomvc。按照 todomvc 应用规范,一个 todo 项目有三种交互方式:完成、编辑和删除。 “完成”显然要求我们记录下每一个 todo 的状态。按照我们目前的实现,每一个 todo 只是一个字符串,没有办法记录其状态。所以我们必须修改模型的数据结构,将 todo 存储为一个对象。我们为每一个 todo 对象添加一个 label 属性、一个 completed 属性。前 ...

0 个评论 0 次阅读

关于我

devbean

devbean

豆子,生于山东,定居南京。毕业于山东大学软件工程专业。软件工程师,主要关注于 Qt、Angular 等界面技术。

主题 Salodad 由 PenciDesign 提供 | 静态文件存储由又拍云存储提供 | 苏ICP备13027999号-2