用什么方法取得 QTreeWidget 中焦点所在行

用什么方法取得 QTreeWidget 中焦点所在行,第1张

1.基本用法:

初始化用基本用到的:

//this->setMouseTracking(true)

this->setRootIsDecorated(false)

this->setSelectionMode(QAbstractItemView::ExtendedSelection)

this->setStyleSheet("QTreeWidget::item{height:25px}") //设置行宽, 我也找不到提供的接口 setStyleSheet很强大建议看

this->setColumnWidth(0, 100) //设置列宽

this->setColumnCount(2)

QStringList lists

lists <<"NO" <<"name"

this->setHeaderLabels(lists)

for (int i=0i<10i++)

{

QStringList contentList

contentList <<QString("00%1").arg(i) <<"boy"

QTreeWidgetItem *pNewItem = new QTreeWidgetItem(this, contentList) //增加

pNewItem->setBackgroundColor(0, QColor(150,0,0))

pNewItem->setFont(0, QFont())

}

//pNewItemRoot->setExpanded(true) //展开子项

增加删除顶层用:

addTopLevelItem(QTreeWidgetItem*)

takeTopLeveltem(int)

topLevelItem(int)//返回

topLevelItemCount()

增加删除子层:

addChild(QTreeWidgetItem*)

addChildren(const QList<QTreeWidgetItem*>&)

takeChild(int)

takeChildren()

child(int) //返回

childCount()

2.进价:

//加checkbox, icon

pNewItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable |Qt::ItemIsEnabled)

pNewItem->setCheckState(0, Qt::Unchecked)

//pNewItem->setIcon(int , QIcon)

//向ITEM里放一些QT的控件,如QSpinBox,QComboBox,QPushButton等

this->setItemWidget(pNewItem, 0, new QSpinBox())

//获取某项的QRect, 有时候会很有用,如显缩略图:

QRect rect = this->visualItemRect(QTreeWidgetItem*)

//右键菜单重写

contextMenuEvent( QContextMenuEvent * event )或者使用信号itemPressed(QTreeWidgetItem*, int)

//对头的 *** 作,可以用QLabel或者QTreeWidgetItem对头进行初始化,

//隐藏头

header()->hide()

m_pHeaderView->setClickable(true) //能够发射sectionClicked(int)信号,可做菜单,显示隐藏列:setSectionHidden(int, bool)isSectionHidden(int)

m_pHeaderView->setMovable(true)

m_pHeaderView->setResizeMode(0, QHeaderView::Fixed) //固定列宽

m_pHeaderView->setDefaultSectionSize(100) //默认

//排序

treeWidget->setSortingEnabled(true)

treeWidget->header()->setSortIndicatorShown(true)

treeWidget->header()->setSortIndicator(0, Qt::AscendingOrder)

//要自定义就用信号

connect( treeWidget->header(), SIGNAL( sectionClicked(int) ), this, SLOT( sectionClickedSlot(int) ) )

在小项目里,使用qtreewidget完全足够,

如果想更多灵活用法请使用QTreeView等 MODEL/VIEW控件

TreeWidget 是 Qt 编程框架提供的一个界面控件,用于显示树形结构。在 TreeWidget 中,当用户点击某个项时,会触发 itemClicked 信号,可以在这个信号的槽函数中进行相应的 *** 作。如果在这个槽函数中重复生成 TreeWidget,可能会导致重复添加 items,从而导致问题。

如果您遇到了 TreeWidget 点击后重复生成的问题,可以考虑以下几个方面:

1. 检查槽函数中是否有重复添加 TreeWidget 的 *** 作,如果有的话,可以将其删除或修改。

2. 检查是否有多个相同的 TreeWidget 控件存在于界面上。如果存在多个相同的 TreeWidget,可能会导致消息分发出现问题,导致问题发生。

3. 如果有通过代码设置选中的 item 的 *** 作,可能也会导致问题。可以在 itemClicked 信号中避免重复设置选中的 item。

4. 如果仍然无法解决问题,可以添加一些调试代码(如输出调试信息)来排查问题所在,帮助确定问题发生的原因。

总之,为了避免 TreeWidget 点击后重复生成问题,需要仔细检查代码逻辑,确保不会进行不必要的 *** 作,以及避免存在多余的控件。此外,调试代码也是排查问题的重要手段。

TreeWidget->addTopLevelItem(itemCollect)//树添加一个顶部的节点

itemCollect->setExpanded(true)//此节点设为展开


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/bake/11246932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存