继承QTreeWidget重写一个类
//展开
void DragTreeWidget::parentExpand(QTreeWidgetItem *item)
{
if (item->parent() != NULL)
{
QTreeWidgetItem *pItem = item->parent();
if (! pItem->isExpanded())
{
pItem->setExpanded(true);
}
parentExpand(pItem);
}
}
//搜索
void DragTreeWidget::SearchChildHidden(QString reg_text)
{
qDebug()<<"SearchChildHidden---";
QTreeWidgetItemIterator it(this);
while (*it)
{
//QTreeWidgetItem是否满足条件---这里的条件可以自己修改
自定义Item中设置数据
//TreeDragItemData* root_data=(*it)->data(0,Qt::UserRole+1).value<TreeDragItemData*>();
//QString qstr2 = QString::fromStdString(root_data->m_strDisplayName);
//if(qstr2.contains(reg_text))
if((*it)->text(0).contains(reg_text))
{
QTreeWidgetItem *item = *it;
//显示父节点
while (item->parent())
{
if(item!=NULL)
{
bool isExpanded = item->isExpanded();
if (! isExpanded)
{
this->expandItem(item);
}
}
parentExpand(*it);
item->parent()->setHidden(false);
item = item->parent();
}
}
else
{
//不满足满足条件先隐藏,它的子项目满足条件时会再次让它显示
(*it)->setHidden(true);
}
++it;
}
}
//取消所有隐藏
void DragTreeWidget::RecoverData()
{
#if 1
//方法一
QTreeWidgetItemIterator it(this);
while (*it)
{
(*it)->text(0);
if((*it)->isHidden())
(*it)->setHidden(false);
++it;
}
#else //方法二
int count = ui->treeWidget->topLevelItemCount();
qDebug()<<"count:"<<count;
for (int i =0; i < count; ++i)
{
QTreeWidgetItem *cItem = ui->treeWidget->topLevelItem(i);
for (int j=0;j<cItem->childCount();j++)
{
if(cItem->child(j)->isHidden())
cItem->child(j)->setHidden(false);
}
if(cItem->isHidden())
cItem->setHidden(false);
}
#endif
this->expandAll();
}
获取自定义控件
for(int i = 0; i < ui->listWidget->count();i++)
{
auto item = ui->listWidget->item(i);
auto listWidget = item->listWidget();
auto itemWidget =listWidget->itemWidget(item);
auto lineEdit = (itemWidget->findChild<QLineEdit *>(QString("lineEdit_2")));
QString dir_name = lineEdit->text();
qDebug()<<" data dir_name "<<dir_name ;
}
博客主要讲述了继承QTreeWidget重写一个类,以及获取自定义控件的相关内容,涉及到Qt编程方面的操作。

975

被折叠的 条评论
为什么被折叠?



