学习一下,据说QTreeWidget简单好用,不需要单独设置Model和View,更没有delegate。Signal和Slot应该可以正常使用(未验证,以后补充)。

#include <QtGui/QApplication>
#include <QTreeWidget>
#include <QDebug> // 定义结构体,只包括四个指针
typedef struct {
char * sect_id, * title, * page_num;
char * parent_id;
} SectionInfo; // 注意1,靠内容(最后一项)来设置上下级关系
// 注意2,它们不是按顺序排列的
SectionInfo directory[] = {
{"Chapter 1", "The Prehistory of C++", "", ""},
{"Chapter 2", "C with Classes", "", ""}, {"Section 1.1", "Simula and Distributed Systems", "", "Chapter 1"},
{"Section 1.2", "C and Systems Programming", "", "Chapter 1"}, {"Section 2.4", "Run-Time Efficiency", "", "Chapter 2"},
{"Section 2.4.1", "Inlining", "", "Section 2.4"},
}; int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTreeWidget * treeWidget = new QTreeWidget();
// 设置列数(赤裸裸简单规定多少列的情况不多见啊)
treeWidget->setColumnCount();
// 设置表头
QStringList headers;
headers << "Section Number" << "Title" << "Page Number";
treeWidget->setHeaderLabels(headers); // 循环一共执行六次
for (int i=; i<sizeof(directory)/sizeof(directory[]); i++) {
SectionInfo info = directory[i]; // 给C++结构体赋值,还挺巧妙的
QTreeWidgetItem * item=NULL;
if (strcmp(info.parent_id, "")== ){
item = new QTreeWidgetItem(treeWidget); // 设置一行依附于整体
}else{
QString parent_id(info.parent_id); // 取得当前行父节点的文字,用于比较
QTreeWidgetItemIterator it (treeWidget); // 取得整体treeWidget的迭代子项,注意是一行一行迭代
// 直到i=4,才会进入while循环,0和1不会进入else,2和3第一次比较就不成立,所以不会进入while
while ( (*it)->text() != parent_id) { // text(0)是QTreeWidgetItem的函数,即第零列的文字
qDebug() << i << " " << (*it)->text();
++it;
}
item = new QTreeWidgetItem( *it ); // 把最后一行空迭代子项变成一行,并把找到的节点设为父节点 good
}
// 有了item及可以设置内容了
if ( item) {
item->setText(, info.sect_id);
item->setText(, info.title );
item->setText(, info.page_num);
}
}
treeWidget->resize(,);
treeWidget->show();
return app.exec();
}

参考:

http://book.51cto.com/art/201207/347905.htm

QTreeWidget的一个例子,C++语法和item迭代循环都比较巧妙的更多相关文章

  1. Python爬虫 XPath语法和lxml模块

    XPath语法和lxml模块 什么是XPath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. X ...

  2. [golang] go的typeswitch guard(类型区别)语法和type assertion(类型断言)语法

    最近在实现golang,看到个go的特性语法: typeswitch guard. typeswitch guard语法如下: package main import "fmt" ...

  3. laravel基础课程---9、视图(lavarel的模板语法和tp相比怎样)

    laravel基础课程---9.视图(lavarel的模板语法和tp相比怎样) 一.总结 一句话总结: lavarel的模板语法比thinkphp好用很多:和html代码配合的更好 lavarel比t ...

  4. ToText Basic 语法和 Crystal 语法

    本文转自http://www.softwelt.com/Know/KnowDetail-2236860.html ToText 和 CStr 是等价函数. 重载 ToText (x) ToText ( ...

  5. Go汇编语法和MatrixOne使用介绍

    目录 MatrixOne数据库是什么? Go汇编介绍 为什么使用Go汇编? 为什么不用CGO? Go汇编语法特点 操作数顺序 寄存器宽度标识 函数调用约定 对写Go汇编代码有帮助的工具 avo tex ...

  6. XPath语法和lxml模块

    XPath语法和lxml模块 什么是XPath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. X ...

  7. OC第五节 ——点语法和@property

    一.setter和getter函数     1.回忆:如何访问对象中的成员变量    2.setter和getter函数的作用            setter  方法:   修改对象的字段/实例变 ...

  8. Markdown 语法和 MWeb 写作使用说明

    ---恢复内容开始--- # Markdown 语法和 MWeb 写作使用说明 Markdown 的设计哲学 Markdown 的目標是實現「易讀易寫」. 不過最需要強調的便是它的可讀性.一份使用 M ...

  9. 对Jena的简单理解和一个例子

    本文简单介绍Jena(Jena 2.4),使用Protégé 3.1(不是最新版本)创建一个简单的生物(Creature)本体,然后参照Jena文档中的一个例子对本体进行简单的处理,输出本体中的Cla ...

随机推荐

  1. [shell基础]——uniq命令

    uniq命令常见选项      去除重复行      -u  显示不重复的行      -d  显示有重复的行      -c  打印每一行重复的次数 测试文本内容如下: # cat 4.txt 11 ...

  2. TI IPNC Web网页之流程分析

    流程 Appro IPNC使用的web服务器是boa. 请仔细理解下面这段话. boa这个web服务器是GUI界面和IPNC应用程序之间的通信的桥梁.它的责任是从web GUI中接收HTTP请求,并且 ...

  3. Bootstrap入门三:页面排版

    在Bootstrap中,页面的排版都是从全局的概念上出发,定制了主体文本.强调文本.标题.Code风格.按钮.表单.表格等格式,并运用CSS3的@font-face和伪元素一起实现了一套icon主题. ...

  4. android 图片缩放抗锯齿

    之前用的时候只设置了antialias属性,其实要设置两个flag才行 paint.setFlags(Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG); ...

  5. 《编写高质量代码:改善Java程序的151个建议》笔记

    To fight the unthinkable,you have to be willing to do the unthinkable.   不要在循环中使用try catch,应该放在循环的外面 ...

  6. weiapi2.2 HelpPage自动生成接口说明文档和接口测试功能

    在开发Webapi项目时每写完一个方法时,是不是需要添加相应的功能说明和测试案例呢?为了更简单方便的写说明接口文档和接口测试HelpPage提供了一个方便的途径. 她的大致原理是:在编译时会生成.dl ...

  7. JS 学习笔记--7---正则表达式

    正则表达式中的内容很多,也很深,下面只是一些基本的知识点,练习中使用的浏览器是IE10,若有不当处请各位朋友指正,我会在第一时间修改错误之处. 匹配的概念:是包含的意思,不是相等的意思 1.正则表达式 ...

  8. 【BZOJ】【1096】【ZJOI2007】仓库建设

    DP/斜率优化 Orz Hzwer 八中好像挂了……明天再提交吧…… UPD:2015-03-12 17:24:43 算了,毕竟是第一道题,还是仔细写一下斜率优化的过程吧.(部分引自Hzwer的题解) ...

  9. 【BZOJ】【1015】 【JSOI2008】星球大战starwar

    并查集/时光倒流 删点维护连通块个数比较难处理,所以我们就逆序来做,先处理最后状态下有多少连通块,再依次加入被删的点,这样就变删点为加点,利用并查集即可维护连通块个数. /************** ...

  10. add some template for ec-final

    二维rmq 离线 init O( n*n*logn*logn )  query O(1) http://www.cnblogs.com/kuangbin/p/3227420.html 求1-n有多少个 ...