QTreeWidget的一个例子,C++语法和item迭代循环都比较巧妙
学习一下,据说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迭代循环都比较巧妙的更多相关文章
- Python爬虫 XPath语法和lxml模块
XPath语法和lxml模块 什么是XPath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. X ...
- [golang] go的typeswitch guard(类型区别)语法和type assertion(类型断言)语法
最近在实现golang,看到个go的特性语法: typeswitch guard. typeswitch guard语法如下: package main import "fmt" ...
- laravel基础课程---9、视图(lavarel的模板语法和tp相比怎样)
laravel基础课程---9.视图(lavarel的模板语法和tp相比怎样) 一.总结 一句话总结: lavarel的模板语法比thinkphp好用很多:和html代码配合的更好 lavarel比t ...
- ToText Basic 语法和 Crystal 语法
本文转自http://www.softwelt.com/Know/KnowDetail-2236860.html ToText 和 CStr 是等价函数. 重载 ToText (x) ToText ( ...
- Go汇编语法和MatrixOne使用介绍
目录 MatrixOne数据库是什么? Go汇编介绍 为什么使用Go汇编? 为什么不用CGO? Go汇编语法特点 操作数顺序 寄存器宽度标识 函数调用约定 对写Go汇编代码有帮助的工具 avo tex ...
- XPath语法和lxml模块
XPath语法和lxml模块 什么是XPath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. X ...
- OC第五节 ——点语法和@property
一.setter和getter函数 1.回忆:如何访问对象中的成员变量 2.setter和getter函数的作用 setter 方法: 修改对象的字段/实例变 ...
- Markdown 语法和 MWeb 写作使用说明
---恢复内容开始--- # Markdown 语法和 MWeb 写作使用说明 Markdown 的设计哲学 Markdown 的目標是實現「易讀易寫」. 不過最需要強調的便是它的可讀性.一份使用 M ...
- 对Jena的简单理解和一个例子
本文简单介绍Jena(Jena 2.4),使用Protégé 3.1(不是最新版本)创建一个简单的生物(Creature)本体,然后参照Jena文档中的一个例子对本体进行简单的处理,输出本体中的Cla ...
随机推荐
- MyEclipse下直接查看class文件 jadnt158下载
在没有源文件的情况下,通过倒入两个jar文件就可以实现 文件链接:http://pan.baidu.com/share/link?shareid=372924537&uk=2435113113 ...
- pietty and putty safe password
如何让putty记住密码..pietty也一样的不能记住密码. 找不到好的的方法...只好试着按照参数格式做了一个快捷方式..F:\soft\pietty.exe -pw password123 ro ...
- .net 常用正则表达式
Net中正则表达式的简单使用方法及常见验证判断 判断字符串是只是数字我们可以这样写:return new System.Text.RegularExpressions.Regex(@"^([ ...
- Retry Pattern
Retry Pattern https://msdn.microsoft.com/en-us/library/dn589788.aspx https://msdn.microsoft.com/en-u ...
- BZOJ 2820 YY的GCD
AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=2820 有种方法是枚举质数然后用BZOJ2301来做但是超时了... 具体式子大概张这样: ...
- shiro添加注解@RequiresPermissions不起作用
这是因为没有开启spring拦截器,在spring-mvc.xml中加入以下代码就可以了(一定要写在最先加载的xml中,写在后面加载的xml中也不起作用) <bean class="o ...
- Hadoop伪分布模式配置
本作品由Man_华创作,采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.基于http://www.cnblogs.com/manhua/上的作品创作. 请先按照上一篇文章H ...
- ios瀑布流
http://blog.csdn.net/shenjx1225/article/details/9037631
- C# 使用 AutoResetEvent 或 ManualResetEvent 同步两个线程
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- ID3决策树---Java
1)熵与信息增益: 2)以下是实现代码: //import java.awt.color.ICC_ColorSpace; import java.io.*; import java.util.Arra ...