qt qtreewidget自动展开失效

qt qtreewidget自动展开失效,第1张

QTreeWidget的一个函数即可搞定,voidsetItemsExpandable ( bool enable ), 该函数来自QTreeView。设置是否允许用户展开和收缩Item。因此要保持展开状态我们只需调用树形控件的两个接口就好了

设置的就是itemsExpandable这个属性,默认是true。我们只需要设置为false就不允许用户收缩/展开Item了。但是我们的目的是要让Item始终保持展开,那不是很矛盾吗?实际上不允许用户收缩/展开但是我们可以通过接口来使Item展开。调用QTreeWidgetItem的setExpanded。更快捷的方式就是调用QTreeWidget的expandAll()。

ui->treeWidget->setColumnCount(1); //设置列数ui->treeWidget->setHeaderLabel(tr("图像选择")); //设置头的标题QTreeWidgetItem imageItem1 = new QTreeWidgetItem(ui->treeWidget,QStringList(QString("图像1")));

imageItem1->setIcon(0,QIcon("xxxpng"));

QTreeWidgetItem imageItem1_1 = new QTreeWidgetItem(imageItem1,QStringList(QString("Band1"))); //子节点1

imageItem1->addChild(imageItem1_1); //添加子节点

QTreeWidgetItem imageItem2 = new QTreeWidgetItem(ui->treeWidget,QStringList(QString("图像2")));

QTreeWidgetItem imageItem2_1 = new QTreeWidgetItem(imageItem2,QStringList(QString("Band1"))); //子节点1

QTreeWidgetItem imageItem2_2 = new QTreeWidgetItem(imageItem2,QStringList(QString("Band2"))); //子节点2

imageItem2->addChild(imageItem2_1);  //添加子节点

imageItem2->addChild(imageItem2_2);

ui->treeWidget->expandAll(); //结点全部展开

增与删

下面是添加的功能:

//这是添加根节点的功能实现this->connect(ui->Root_btn, SIGNAL(clicked(bool)), this, SLOT(addRoot()));void Widget::addRoot()

{

QString one = ui->first->text();

QString two = ui->second->text();

QString three = ui->third->text();

QTreeWidgetItem item = new QTreeWidgetItem();

item->setText(0, one);

item->setText(1, two);

item->setText(2, three);

ui->Tree->addTopLevelItem(item);

}//这是添加叶子节点的实现this->connect(ui->Child_btn, SIGNAL(clicked(bool)), this, SLOT(addChild()));void Widget::addChild()

{

QString one = ui->first->text();

QString two = ui->second->text();

QString three = ui->third->text();

QTreeWidgetItem parent = ui->Tree->currentItem();

QTreeWidgetItem item = new QTreeWidgetItem();

item->setText(0, one);

item->setText(1, two);

item->setText(2, three); parent->addChild(item);

}

添加叶子节点字需要注意父节点的获取就可以了。

下面是删除节点的功能:

this->connect(ui->DEL_btn, SIGNAL(clicked(bool)), this, SLOT(deleteNode()));

void del(QTreeWidgetItem node){ if(node->childCount() > 0)

{ for(int i = 0; i < node->childCount(); i ++)

{ del(node->child(i));

}

}

else

{

delete node;

}

}

void Widget::deleteNode()

{

QTreeWidgetItem item = ui->Tree->currentItem();

if(item->childCount() > 0)

{ for(int i = 0; i < item->childCount(); i ++)

{ del(item->child(i));

}

}

delete item;

}

删除节点时记得循环删除这个节点下面的所有的子节点。

以上就是关于qt qtreewidget自动展开失效全部的内容,包括:qt qtreewidget自动展开失效、qt中用树形结构作项目索引怎么实现各项目页面跳转、Qt中怎么实现Qtreewidget节点的撤销重做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9324946.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存