QT QTreeWidgetItem 有人总结的挺好,转载存储

本文详细介绍了QTreeWidget和QTreeWidgetItem的使用方法,包括构造、添加子节点、设置表头、隐藏表头、设置列数目、隐藏/编辑item等功能,并提供了查找item和触发信号的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QTreeWidgetItem有九个重载的函数,如果在构造的时候指定了parent,就不需要在后面用insertTopLevelItems来插入到里面,如果没有指定parent,就把所有的根节点放到QList中,然后使

用insertTopLevelItems(int,QList)插入到QTreeWidget里面

QTreeWidgetItem::addChild(QTreeWidgetItem*)用于根节点添加子节点

QTreeWidget::setColumnCount用于设置表中的列的列数目,在表头中会有对应的显示,如果要隐藏表头,使用QTreeWidget::setHeaderHidden()

同样想QListWidget和QTableWidget一样,可以在每一item前面添加上选框和ICON,也可以使用QTableWidget的方法来检查前面的选框是否选中

添加表头的两种方法
方法一:
QStringList header;
header<<"ECJTU"<<"CERT";
treewidget->setHeaderLabels(header); //设置表头
方法二:
QStringList header;
header<<"ECJTU"<<"CERT";
QTreeWidgetItem *head=new QTreeWidgetItem((QTreeWidget*)0,header);
treewidget->setHeaderItem(head);


返回表头指针QTreeWidgetItem * QTreeWidget::headerItem () const

QTreeWidgetItem::setSortingEnabled(bool)可以用来设置是否可以排序,当为true时候,点击表头,会自动排序

openPersistentEditor和closePersistentEditor用来控制某一item是否可以编辑

clear将会清除所有的item

QTreeWidgetItem * QTreeWidget::currentItem () const返回当前的item指针,
int QTreeWidget::currentColumn () const放回当前item的列编号

QTreeWidgetItem * QTreeWidget::itemAt ( int x, int y ) const返回给定的位置的item指针
QTreeWidgetItem * QTreeWidget::itemBelow ( const QTreeWidgetItem * item ) const
返回指定的item下面item
与之对应的是
QTreeWidgetItem * QTreeWidget::itemAbove ( const QTreeWidgetItem * item ) const
返回指定的item上面item

查找item时候,通QListWidget和QTableWidget一样,同样有多个查找匹配模式
QList<QTreeWidgetItem *> QTreeWidget::findItems ( const QString & text, Qt::MatchFlags flags, int column = 0 ) const

当当前的item发生变化时候,会发出信号
currentItemChanged ( QTreeWidgetItem * current, QTreeWidgetItem * previous ) 
类同信号itemChanged ( QTreeWidgetItem * item, int column )
itemClicked ( QTreeWidgetItem * item, int column )
当双击某个item或者按下enter键时候,会发出信号
void QTreeWidget::itemActivated ( QTreeWidgetItem * item, int column )  
表示使能了某个item
等同于信号itemDoubleClicked ( QTreeWidgetItem * item, int column )和 itemPressed ( QTreeWidgetItem * item, int column )

### 如何在Qt中为QTreeWidgetItem设置字体颜色 在Qt中,可以通过自定义`QBrush`对象并将其应用到`QTreeWidgetItem`的前景色属性上来实现字体颜色的更改。以下是具体方法: 可以创建一个`QBrush`对象,并指定所需的字体颜色,然后调用`QTreeWidgetItem::setForeground()`函数将该刷子应用于特定项[^1]。 下面是一个完整的代码示例展示如何设置`QTreeWidgetItem`的字体颜色: ```cpp #include <QApplication> #include <QTreeWidget> #include <QTreeWidgetItem> #include <QBrush> int main(int argc, char *argv[]) { QApplication app(argc, argv); QTreeWidget treeWidget; treeWidget.setColumnCount(1); // 创建顶层节点 QTreeWidgetItem *parentItem = new QTreeWidgetItem(&treeWidget, QStringList("Parent Item")); // 设置父节点字体颜色为红色 parentItem->setForeground(0, QBrush(Qt::red)); // 添加子节点 QTreeWidgetItem *childItem = new QTreeWidgetItem(parentItem, QStringList("Child Item")); // 设置子节点字体颜色为蓝色 childItem->setForeground(0, QBrush(Qt::blue)); treeWidget.expandAll(); treeWidget.resize(300, 200); treeWidget.show(); return app.exec(); } ``` 此代码片段展示了如何分别设置父级和子级项目的字体颜色为红色和蓝色。 另外需要注意的是,在某些情况下也可以通过CSS样式表全局修改树形控件内的文字显示效果,但是针对单独条目更推荐使用上述方式直接操作其foreground属性[^2]。 #### 注意事项 当尝试改变项目外观时,请确保所使用的版本支持这些功能;此外如果涉及复杂场景比如动态加载数据,则可能还需要考虑性能优化等问题。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值