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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql中phpmyadmin安装教程_特详细的PHPMYADMIN简明安装教程

    mysql中phpmyadmin安装教程_特详细的PHPMYADMIN简明安装教程特详细的PHPMYADMIN简明安装教程更新时间:2008年08月01日00:27:12作者:简单的说,phpmyadmin就是一种mysql的管理工具,安装该工具后,即可以通过web形式直接管理mysql数据,而不需要通过执行系统命令来管理,非常适合对数据库操作命令不熟悉的数据库管理者,下面我就说下怎么安装该工具:1.先到网上下载phpmyadmin,再解压到可以访问的web目录下(如果…

    2022年5月31日
    29
  • 正確使用 SetCapture ReleaseCapture [譯]「建议收藏」

    正確使用 SetCapture ReleaseCapture [譯]「建议收藏」本文描述瞭如何正確處理自定義窗口和控件中的鼠標捕獲操作。原文鏈接: http://www.codeproject.com/Tips/127813/Using-SetCapture…correctly.aspx原作者: pasztorpisti轉載請註明出處:http://www.imoldman.com/2010/11/30/using-setcaptu…ture-corre

    2022年5月24日
    33
  • leetcode, LC5: insertion-sort-list[通俗易懂]

    leetcode, LC5: insertion-sort-list[通俗易懂]题目描述使用插入排序对链表进行排序。Sortalinkedlistusinginsertionsort.示例1输入{3,2,4}输出{2,3,4}解题思路new一个新的ListNode作为选择排序好的链表的表头对于原始链表中的每一个结点2.1.寻找新链表中该结点的插入位置2.2插入该结点返回新链表代码实现/***structListNode{* intval;* structListNode*next;

    2022年7月24日
    7
  • 【豆瓣达人总结】做爱做的事,看有趣的人

    【豆瓣达人总结】做爱做的事,看有趣的人惊雀http://www.douban.com/people/4917689/有想法很特别的一位大哥,从另一个角度告诉你什么叫做“人不可貌相”,有位友邻说得好:之所以觉得惊先生特别是因为先生是为数不多思考爱情的帅哥~@东窗未白keledollhttp://www.douban.com/people/keledoll/热血科学心理学女青年,今天才发现她有豆瓣页面。搜索kele

    2022年9月28日
    2
  • com.jcraft.jsch.JSchException: Auth fail

    背景服务器信息: 服务器A:10.102.110.1 服务器B:10.102.110.2 需要从服务器A通过Sftp传输文件到服务器B。应用项目中有一个功能,要通个关Sftp进行日志文件的传输,在部署的时候,服务器之间已经配置了免认证(密),也就sftp免密登录,但是部署完项目后,启动服务,在需要传输的时候还是报了下面的错误: com.jcraft.jsch.JSchExcep…

    2022年2月27日
    339
  • C++中this指针的理解和用法

    C++中this指针的理解和用法关于this指针的一个精典回答:当你进入一个房子后,你可以看见桌子、椅子、地板等,但是房子你是看不到全貌了。对于一个类的实例来说,你可以看到它的成员函数、成员变量,但是实例本身呢?this是一个指针,它时时刻刻指向你这个实例本身。 个人理解:(ps:class类就好比这座房子,this就好比一把钥匙,通过钥匙来打开了这座房子的门,那么里面的东西就随意你取用了)

    2022年5月16日
    33

发表回复

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

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