QTreeWidget讲解及节点操作

QTreeWidget讲解及节点操作关于Qt的节点操作,也就是QTreeWidget类的操作。先看我的效果图!   具体实现如下!构造函数中写事件!connect(ui->treeWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),      this,SLOT(showSelecteddataba

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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的节点操作,也就是QTreeWidget 类的操作。

先看我的效果图!
Qt学习(7)之节点(QTreeWidget)操作 - 故事丶从结局开始。 - Study Hard And Make

 
Qt学习(7)之节点(QTreeWidget)操作 - 故事丶从结局开始。 - Study Hard And Make

Qt学习(7)之节点(QTreeWidget)操作 - 故事丶从结局开始。 - Study Hard And Make

 

 

具体实现如下!
构造函数中写事件!
connect(ui->treeWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),
            this,SLOT(showSelecteddatabaseTable(QTreeWidgetItem*,int)));//双击节点事件

1、添加节点!

QTreeWidgetItem* A = new QTreeWidgetItem(QStringList()<<str_db);      //给树控件传值(数据库名字)。
     ui->treeWidget->addTopLevelItem(A);
         QStringList columItemList,columItemList1,columItemList2,columItemList3;
         QTreeWidgetItem *child;
         QTreeWidgetItem *child1;
         QTreeWidgetItem *child2;
         QTreeWidgetItem *child3;
         QString key1,key2,key3,key4,value;
         key1 += “gsxxb”;
         key2 += “gqxxb”;
         key3 += “zhxxb”;
         key4 += “glxxb”;
         columItemList<<key1<<value;
         columItemList1<<key2<<value;
         columItemList2<<key3<<value;
         columItemList3<<key4<<value;

         child  = new QTreeWidgetItem(columItemList);
         child1 = new QTreeWidgetItem(columItemList1);
         child2 = new QTreeWidgetItem(columItemList2);
         child3 = new QTreeWidgetItem(columItemList3);
         A->addChild(child);
         A->addChild(child1);
         A->addChild(child2);
         A->addChild(child3);

2丶在tableView中显示节点内容!

QTreeWidgetItem *parent=item->parent();//获得父节点
        if(NULL==parent)
            return;
        int row=parent->indexOfChild(item);//获得节点在父节点中的行号(从0开始)
        model = new lntable();  //开辟内存空间
        if (row==0)
        {
            ui->tableView_2->setModel(model->gettableModel1());
            ui->tableView_2->resizeColumnsToContents();//根据内容调整
        }
        if (row==1)
        {
            ui->tableView_2->releaseKeyboard();
            ui->tableView_2->setModel(model->gettableModel2());
            ui->tableView_2->resizeColumnsToContents();//根据内容调整
        }
        if (row==2)
        {
            ui->tableView_2->setModel(model->gettableModel3());
            ui->tableView_2->resizeColumnsToContents();//根据内容调整
        }
        if (row==3)
        {
            ui->tableView_2->setModel(model->gettableModel4());
            ui->tableView_2->resizeColumnsToContents();//根据内容调整
        }

 

3丶删除节点!

QTreeWidgetItem *item =ui->treeWidget->currentItem();
    QString name = tr(“数据库”);
    QString content=item->text(0);//获取当前数据库行的名字
    if(item->parent()!=NULL)
        name=tr(“数据库表”);
    if(QMessageBox::Yes==QMessageBox::information(this,tr(“删除”)+name,tr(“确认要删除”)+name+
                                                  “<font color=red>”+content+”</font>” ,QMessageBox::Yes|QMessageBox::No))
    {
        if(item->parent()==NULL)
            delete ui->treeWidget->takeTopLevelItem(ui->treeWidget->currentIndex().row());
        else
            delete item->parent()->takeChild(ui->treeWidget->currentIndex().row());
    }
大概流程就这样!


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187079.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • markdown语法大全(日语一共多少语法)

    最全的Markdown语法Markdown是Github最常见的文档说明。Markdown的语法简洁明了、学习容易。按照官方MarkdownCheatSheet逐个操作一遍自然就会了。[TOC]这个语法在markdown工具里能够识别,但是在这里不能识别。目录代码:文章目录一级标题##二级标题#####多级标题[MENU]效果显示如上多级标题代码:一级标题##二级标题#####多级标题效果一级标题二级标题多级标题引用与注释代码:一级引用>>二级引

    2022年4月15日
    69
  • Vue router原理

    Vue router原理总结:vue-router是vue项目的重要组成部分,用于构建单页应用。单页应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。路由的本质就是建立url和页面之间的映射关系router模式hash/historyhash模式是vue-router的默认模式。hash指的是url锚点,当锚点发生变化的时候,浏览器只会修改访问历史记录,不会访问服务器重新获取页面。因此可以监听描点值的变化,根据描点值渲染指定dom。hash监听方法:window.addEventListene

    2022年7月27日
    3
  • 解决angularjs图片加载失败

    解决angularjs图片加载失败解决angularjs图片加载失败

    2022年5月30日
    52
  • iOS 强大第三方资源库

    iOS 强大第三方资源库Github用法git-recipesGitrecipesinChinese.高质量的Git中文教程.lark怎样在Github上面贡献代码my-git有关git的学习资料gitignore非常赞有用的.gitignore模板集合(忽略上传的文件集合),包含了各种语言.完整App@open-source-ios-apps-iOS开源App集合,分:swift与Objec…

    2022年6月9日
    106
  • 机器学习之Python — Sklearn库简介

    机器学习之Python — Sklearn库简介文章目录机器学习之Python—Sklearn库简介1Sklearn简介2Sklearn安装3Sklearndatasets4Sklearn通用学习模式5Sklearn数据预处理–标准化6Sklearn交叉验证7总结参考资料机器学习之Python—Sklearn库简介1Sklearn简介Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常…

    2022年10月11日
    0
  • python dropna()用法「建议收藏」

    python dropna()用法「建议收藏」pythondropna()用法**DataFrme.dropna(axis=0,how=’any’,thresh=None,subset=None,inplace=False)参数:axis:默认axis=0。0为按行删除,1为按列删除how:默认‘any’。‘any’指带缺失值的所有行/列;’all’指清除一整行/列都是缺失值的行/列thresh:int,保留含有int个非nan值的行subset:删除特定列中包含缺失值的行或列inplac

    2022年9月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号