QTreeWidget的显示效果与MFC的TreeCtrl控件是类似的,QTreeWidget与QTReeView的本质区别是QTreeWidget面向QTreeWidgetItem,而QTReeView是面向model的。
一个简单的小例子用来阐述QTreeWidget的简单使用。
#include <QtGui/QApplication>
#include <QtCore/QTextCodec>
#include <QTreeWidget>
#include <QWidget>
#include <QHBoxLayout>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
QTreeWidget *tree = new QTreeWidget;
tree->setColumnCount(2);
QStringList headers;
headers << QObject::tr("科目") <<QObject::tr("分数");
tree->setHeaderLabels(headers);
QStringList zhangsan;
zhangsan << QObject::tr("张三");
QTreeWidgetItem *zhangsanroot = new QTreeWidgetItem(tree, zhangsan);
QStringList zhangsanChinese;
zhangsanChinese << QObject::tr("语文") << QObject::tr("80");
QTreeWidgetItem *leaf1 = new QTreeWidgetItem(zhangsanroot, zhangsanChinese);
zhangsanroot->addChild(leaf1);
QStringList zhangsanMath;
zhangsanMath << QObject::tr("数学") << QObject::tr("90");
QTreeWidgetItem *leaf2 = new QTreeWidgetItem(zhangsanroot, zhangsanMath);
zhangsanroot->addChild(leaf2);
QStringList lisi;
lisi << QObject::tr("李四");
QTreeWidgetItem *lisiroot = new QTreeWidgetItem(tree, lisi);
QStringList lisiChinese;
lisiChinese << QObject::tr("语文") << QObject::tr("90");
leaf1 = new QTreeWidgetItem(lisiroot, lisiChinese);
lisiroot->addChild(leaf1);
QStringList lisiMath;
lisiMath << QObject::tr("数学") << QObject::tr("100");
leaf2 = new QTreeWidgetItem(lisiroot, lisiMath);
lisiroot->addChild(leaf2);
tree->addTopLevelItem(zhangsanroot);
tree->addTopLevelItem(lisiroot);
QHBoxLayout *mainlayout = new QHBoxLayout;
mainlayout->addWidget(tree);
QWidget *widget = new QWidget;
widget->setLayout(mainlayout);
widget->setWindowTitle(QObject::tr("QTreeWidget Demo"));
widget->show();
return a.exec();
}
运行结果: