QTreeWidgetItem 类的翻译
简介
QTreeWidgetItem 和QTreeWidget 一同是为了实现树状数据类型。
TreeWidget的每个数据项(items)有行和列决定。每个数据项除了包含数据外,还可以包含text lable 或者icon。
数据项(items)建构的时候,指定的父项可以是QTreeWidget (for top-level items)
,也可以是QTreeWidgetItem (for items on lower levels of the tree)。
举一个例子:构建一个上层的数据项cities of the world, 它包含两个子项"Oslo" 和“Yes”:
QTreeWidgetItem *cities = new QTreeWidgetItem(treeWidget);
cities->setText(0, tr("Cities"));
QTreeWidgetItem *Ningbo= new QTreeWidgetItem(cities);
osloItem->setText(0, tr("Jiangdong"));
osloItem->setText(1, tr("Yinzhou"));
通过构造函数可以将数据项按一定的次序构建:
QTreeWidgetItem *Zone= new QTreeWidgetItem(treeWidget, cities);
planets->setText(0, tr("Zone"));
每一列中的某一数据项都可以通过函数setBackground()指定它特有的背景颜色。通过background()获取当前背景颜色的笔刷。数据项的文本可以渲染不同的字体和颜色。
QFont font;
font.setPointSize(15);
planets->setBackgroundColor(1,Qt::red);
planets->setFont(1,font);
planets->setForeground(1,Qt::black);
上层数据项(top-level items)和下层数据项(low-level items)的主要区别在于上层数据项(top-level items)不含有父项。
默认情况下,数据项支持选择,确认,拖放的操作。每一个数据项的标志(flags)可以通过函数setFlags()来设定,设定的值可以查阅(Qt::itemFlags)。setCheckState()函数可以配置数据项是否选中确认。 CheckState()函数可以返回当前的数据项是否被选中。
子类化QTreeWidgetItem
子类化QTreeWidgetItem 需要在类构建时指定UserType。
成员函数
1、构造函数
QTreeWidgetItem::QTreeWidgetItem(const QTreeWidgetItem &other)
构造一份QTreeWidgetItem 的拷贝。
QTreeWidgetItem::QTreeWidgetItem(QTreeWidgetItem *parent, QTreeWidgetItem *preceding, int type = Type)
构造一个QTreeWidgetItem,并且插入到parent->preceding之后。
QTreeWidgetItem::QTreeWidgetItem(QTreeWidgetItem *parent, const QStringList &strings, int type = Type)
构造一个QTreeWidgetItem,作为子项插入到parent之后,list of strings
会作为每一列的数据项。
QTreeWidgetItem::QTreeWidgetItem(QTreeWidgetItem *parent, int type = Type)
构造一个QTreeWidgetItem,并且插入作为子项插入到parent之后。
QTreeWidgetItem::QTreeWidgetItem(const QStringList &strings, int type = Type)
构造一个QTreeWidgetItem,list of strings
会作为每一列的数据项。
QTreeWidgetItem::QTreeWidgetItem(int type = Type)
构造一个QTreeWidgetItem。
2、其他成员函数
void QTreeWidgetItem::addChild(QTreeWidgetItem *child)
添加单个子项
void QTreeWidgetItem::addChildren(const QList<QTreeWidgetItem *> &children)
添加多个子项
QBrush QTreeWidgetItem::background(int column) const
返回背景色的笔刷
Qt::CheckState QTreeWidgetItem::checkState(int column) const
返回选中确认的状态
QTreeWidgetItem *QTreeWidgetItem::child(int index) const
返回子项
int QTreeWidgetItem::childCount() const
返回子项的数目
QTreeWidgetItem::ChildIndicatorPolicy QTreeWidgetItem::childIndicatorPolicy() const
返回tree展开或者崩塌时的显示。
QTreeWidgetItem *QTreeWidgetItem::clone() const
深度复制
QVariant QTreeWidgetItem::data(int column, int role) const
返回数据项的列和角色
void QTreeWidgetItem::emitDataChanged()
Qt::ItemFlags QTreeWidgetItem::flags() const
返回数据项的标志
QFont QTreeWidgetItem::font(int column) const
返回数据项使用的字体
QBrush QTreeWidgetItem::foreground(int column) const
返回数据项使用的前景色
QIcon QTreeWidgetItem::icon(int column) const
返回数据项使用的Icon
int QTreeWidgetItem::indexOfChild(QTreeWidgetItem *child) const
返回子项的索引号
void QTreeWidgetItem::insertChild(int index, QTreeWidgetItem *child)
在索引号处插入单个子项
void QTreeWidgetItem::insertChildren(int index, const QList<QTreeWidgetItem *> &children)
在索引号处插入多个子项
bool QTreeWidgetItem::isExpanded() const
返回数据项是否被展开
bool QTreeWidgetItem::isFirstColumnSpanned() const
bool QTreeWidgetItem::isHidden() const
bool QTreeWidgetItem::isSelected() const
QTreeWidgetItem *QTreeWidgetItem::parent() const
返回父项
void QTreeWidgetItem::removeChild(QTreeWidgetItem *child)
删除子项
void QTreeWidgetItem::setChildIndicatorPolicy(QTreeWidgetItem::ChildIndicatorPolicy policy)
设置是否显示树展开或者崩塌的控件
[virtual]
void QTreeWidgetItem::setData(int column, int role, const QVariant &value)
设置数据项的重载类型
void QTreeWidgetItem::setDisabled(bool disabled)
设置数据项是否有效,如果无效,显示时灰色。
void QTreeWidgetItem::setExpanded(bool expand)
设置数据项是否展开其子项
void QTreeWidgetItem::setFirstColumnSpanned(bool span)
如果span使能,first section 会列出所有的数据项
void QTreeWidgetItem::setFlags(Qt::ItemFlags flags)
设置标志
void QTreeWidgetItem::setFont(int column, const QFont &font)
设置字体
void QTreeWidgetItem::setForeground(int column, const QBrush &brush)
设置字体颜色
void QTreeWidgetItem::setHidden(bool hide)
设置是否隐藏
void QTreeWidgetItem::setIcon(int column, const QIcon &icon)
设置ICon
void QTreeWidgetItem::setSelected(bool select)
void QTreeWidgetItem::setSizeHint(int column, const QSize &size)
void QTreeWidgetItem::setStatusTip(int column, const QString &statusTip)
void QTreeWidgetItem::setText(int column, const QString &text)
设置数据项的文本内容
void QTreeWidgetItem::setTextAlignment(int column, int alignment)
设置数据项的对齐方式
void QTreeWidgetItem::setToolTip(int column, const QString &toolTip)
void QTreeWidgetItem::setWhatsThis(int column, const QString &whatsThis)
QSize QTreeWidgetItem::sizeHint(int column) const
void QTreeWidgetItem::sortChildren(int column, Qt::SortOrder order)
对子项排序
QString QTreeWidgetItem::statusTip(int column) const
QTreeWidgetItem *QTreeWidgetItem::takeChild(int index)
删除单个子项
QList<QTreeWidgetItem *> QTreeWidgetItem::takeChildren()
删除多个子项
QString QTreeWidgetItem::text(int column) const
返回数据项的文本
3、成员函数的简单使用
成员函数内容很多,为了更清楚地了解成员函数的使用,
//构造一个父项,并指定字体和背景色
QTreeWidgetItem *Galaxy = new QTreeWidgetItem(ui->treeWidget);
Galaxy->setText(0, tr("Galaxy"));
QFont font;
font.setPointSize(15);
Galaxy->setBackgroundColor(0,Qt::red);
Galaxy->setFont(0,font);
Galaxy->setForeground(0,Qt::black);
//构造一个父项
QTreeWidgetItem *Country = new QTreeWidgetItem(ui->treeWidget);
Country->setText(0,"Country");
//通过addchild()函数在当前父项下添加子项
QTreeWidgetItem *CountryItem_0 = new QTreeWidgetItem();
CountryItem_0->setText(0,"China");
Country->addChild(CountryItem_0);
QTreeWidgetItem *CountryItem_1 = new QTreeWidgetItem();
CountryItem_1->setText(0,"Japan");
Country->addChild(CountryItem_1);
//直接通过构造函数生成子项
QTreeWidgetItem *CountryItem_3 = new QTreeWidgetItem(Country,CountryItem_0);
CountryItem_3->setText(0,"India");
QTreeWidgetItem *CountryItem_4 = new QTreeWidgetItem(Country);
CountryItem_4->setText(0,"Mongo");
//构造其他的数据项,不指认其父项
QTreeWidgetItem *cities = new QTreeWidgetItem();
cities->setText(0, tr("Cities"));
QTreeWidgetItem *osloItem = new QTreeWidgetItem(cities);
osloItem->setText(0, tr("Ningbo"));
osloItem->setText(1, tr("Hangzhou"));
osloItem->setCheckState(0,Qt::Unchecked);
//osloItem->setFlags(Qt::ItemIsUserCheckable);
//添加到父项下
CountryItem_0->addChild(cities);
//child()函数的使用
QTreeWidgetItem *ncite = Country->child(0)->child(0);
QString strText = ncite->text(0);
qDebug()<<strText;
QTreeWidgetItem *top_level_item_0 = new QTreeWidgetItem(ui->treeWidget);
top_level_item_0->setText(0,"top_level");
ui->treeWidget->insertTopLevelItem(0, top_level_item_0);
QList<QTreeWidgetItem *> childrenlist;
QTreeWidgetItem *child_0= new QTreeWidgetItem();
child_0->setText(0,"child0");
QTreeWidgetItem *child_1= new QTreeWidgetItem();
child_1->setText(0,"child1");
QTreeWidgetItem *child_2= new QTreeWidgetItem();
child_2->setText(0,"child2");
//child_2->setDisabled(1);
childrenlist<<child_0<<child_1<<child_2;
//将子项列表添加
top_level_item_0->addChildren(childrenlist);
top_level_item_0->setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
//设置默认树状展开
top_level_item_0->setExpanded(1);
ui->treeWidget->show();
效果如下: