1 2 3 4 下一页 今天来说的是自定义model中最复杂的例子。这个例子同样也是出自C++ GUI Programming with Qt 4, 2nd Edition这本书。 这个例子是将布尔表达式分析成一棵树。这个分析过程在离散数学中经常遇到,特别是复杂的布尔表达式,类似的分析可以比较方便的进行表达式化简、求值等一系列的计算。同样,这个技术也可以很方便的分析一个表达式是不是一个正确的布尔表达式。在这个例子中,一共有四个类: Node:组成树的节点; BooleaModel:布尔表达式的model,实际上是一个tree model,用于将布尔表达式表示成一棵树; BooleanParser:将布尔表达式生成分析树的分析器; BooleanWindow:输入布尔表达式并进行分析,展现成一棵树。 这个例子可能是目前为止最复杂的一个了,所以先来看看最终的结果,以便让我们心中有数: 先来看这张图片,我们输入的布尔表达式是!(a||b)&&c||d, 在下面的Node栏中,用树的形式将这个表达式分析了出来。如果你熟悉编译原理,这个过程很像词法分析的过程:将一个语句分析称一个一个独立的词素。 我们从最底层的Node类开始看起,一步步构造这个程序。 Node.h
(责任编辑:admin) |