Wilik

好记性不如烂博客

1. 模型

Example

1
2
3
4
5
6
7
8
9
class Example {
Q_OBJECT
Q_DECLARE_PRIVATE(Example)
public:
Example();
~Example();

ExamplePrivate *d_ptr;
};

ExamplePrivate

1
2
3
4
5
6
7
8
class ExamplePrivate {
Q_DECLARE_PUBLIC(Example)
public:
ExamplePrivate(Example *example);

private:
Example *q_ptr;
};

2. Q_DECLARE_PRIVATE 宏的展开

1
2
3
4
5
6
7
8
9
10
11
12
13
// 定义
#define Q_DECLARE_PRIVATE(Class) \
inline Class##Private* d_func() \
{ Q_CAST_IGNORE_ALIGN(return reinterpret_cast<Class##Private *>(qGetPtrHelper(d_ptr));) } \
inline const Class##Private* d_func() const \
{ Q_CAST_IGNORE_ALIGN(return reinterpret_cast<const Class##Private *>(qGetPtrHelper(d_ptr));) } \
friend class Class##Private;

// 展开
inline ExamplePrivate* d_func() {
return reinterpret_cast<ExamplePrivate *>(d_ptr);
}
friend class ExamplePrivate;

3. Q_DECLARE_PUBLIC 宏的展开

1
2
3
4
5
6
7
8
9
10
11
// 定义
#define Q_DECLARE_PUBLIC(Class) \
inline Class* q_func() { return static_cast<Class *>(q_ptr); } \
inline const Class* q_func() const { return static_cast<const Class *>(q_ptr); } \
friend class Class;

// 展开
Example* q_func() {
return static_cast<Example *>(q_ptr);
}
friend class Example;

4. Q_D

1
2
3
4
5
// 定义
#define Q_D(Class) Class##Private * const d = d_func()

// 展开
Example * const d = d_func();

5. Q_Q

1
2
3
4
5
// 定义
#define Q_Q(Class) Class * const q = q_func()

// 展开
Example * const q = q_func();

6. 总结

Q_DECLARE_PRIVATE一般用于主类的XXXPrivate成员声明,而且声明为friend类型,可以让这个XXXPrivate类型成员方便的访问主类所有成员;Q_DECLARE_PUBLIC用于XXXPrivate类里面对主类的声明,也将主类声明为friend类型;在主类里面可以用Q_D访问XXXPrivate类型的指针,在XXXPrivate类里面可以用Q_Q访问主类指针

1. 第一级

找故事内容比较浅显的,带拼音的书来读,主要培养孩子尽可能多的认识生字,对文章内容可以不做过多理解。

2. 第二级

读带拼音的故事书,一个章节一个章节那种

1> 读完一个章节要能记住章节题目

2> 读书过程中标记出文章中的人物姓名(像标记数学应用题中的数字一样),慢慢的可以提问一些人物之间

发生的事件和关系等,这个过程中一边继续加强生字认识,也慢慢试图去理解文章内容
在实践 2> 的过程当中,发现如果选用有一定难度的教材,可能孩子不太容易理解,效果不是很好,可以先选用一些简单点的读物,让孩子带着任务去读文章

1. 本地修改尚未执行git addgit commit

放弃本地修改单个文件

1
$ git checkout -- filename

放弃本地修改的所有文件

1
$ git checkout .
阅读全文 »
0%