• Qt之QTreeWidget入门


    QTreeWidget的一些基本操作

    1.insertTopLevelItems,insertTopLevelItem用来添加顶层的item

    QTreeWidget *treeWidget = new QTreeWidget(this);//创建
    treeWidget->setColumnCount(1);  //设置列
    treeWidget->setHeaderLabel(tr("item tree"));    //设置标题
    treeWidget->setGeometry(0,0,this->width(),this->height());  //设置大小
    QList<QTreeWidgetItem *> items;
    
    //创建两个节点
    QTreeWidgetItem *fItem1 = new QTreeWidgetItem(treeWidget,QStringList(QString("f1")));
    QTreeWidgetItem *fItem2 = new QTreeWidgetItem(treeWidget,QStringList(QString("f2")));
    
    items.append(fItem1);
    items.append(fItem2);
    //添加顶层节点
    treeWidget->insertTopLevelItems(0,items);
    //节点始终保持展开
    treeWidget->setItemsExpandable(false);
    treeWidget->expandAll();

    2.父节点通过addChild增加子节点

    //创建子节点
    QTreeWidgetItem *fItem1a = new QTreeWidgetItem(fItem1,QStringList(QString("f1a")));
    QTreeWidgetItem *fItem1b = new QTreeWidgetItem(fItem1,QStringList(QString("f1b")));
    
    QTreeWidgetItem *fItem2a = new QTreeWidgetItem(fItem2,QStringList(QString("f2a")));
    QTreeWidgetItem *fItem2b = new QTreeWidgetItem(fItem2,QStringList(QString("f2b")));
    
        //添加字节点
    fItem1->addChild(fItem1a);
    fItem1->addChild(fItem1b);
    
    fItem2->addChild(fItem2a);
    fItem2->addChild(fItem2b);

    3.建立鼠标点击右键点击信号检测

    //检测点击事件
        connect(treeWidget,SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(itemClick(QTreeWidgetItem*,int)));
        //检测鼠标右键
    treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
    connect(treeWidget,SIGNAL(customContextMenuRequested(const QPoint&)), this,SLOT(popMenu(const QPoint&)));

    4.槽函数

    void Widget::itemClick(QTreeWidgetItem *item, int column)
    {
        QTreeWidgetItem *parent = item->parent();   //获取父节点
        if(NULL==parent) //注意:最顶端项是没有父节点的
            return;
        int col = parent->indexOfChild(item); //item在父项中的节点行号(从0开始)
    }
    
    //弹出菜单
    void Widget::popMenu(const QPoint &)
    {
        QTreeWidgetItem* curItem=treeWidget->currentItem();  //**获取当前被点击的节点
        if(curItem == NULL || curItem->parent() == NULL)
            return;           //右键的位置在空白位置右击或者点击的是顶层item
    
        //创建一个action
        QAction deleteItem(QString::fromLocal8Bit("&删除"),this);
        connect(&deleteItem, SIGNAL(triggered()), this, SLOT(deleteItem()));
        QPoint pos;
        //创建一个菜单栏
        QMenu menu(treeWidget);
        menu.addAction(&deleteItem);
        menu.exec(QCursor::pos());  //在当前鼠标位置显示
    }
    
    //删除item
    void Widget::deleteItem()
    {
        QTreeWidgetItem* curItem=treeWidget->currentItem();
        curItem->parent()->removeChild(treeWidget->currentItem());
    }
  • 相关阅读:
    <%!%>和<%%>的区别
    <jsp:param>传参乱码问题
    RedHat6.4 安装yum源
    J2EE中getParameter与getAttribute以及对应的EL表达式
    Ubuntu xrdp 遠端桌面連線 a
    Ubuntu SSH server 快速安裝和設定 a
    Ubuntu 12.04 快速安裝 Scrapy a
    Linux 壓縮與解壓縮指令備忘錄 a
    vim 設定快捷鍵為 [Ctrl] + [s] 存檔 a
    Linux 常用指令備忘錄 a
  • 原文地址:https://www.cnblogs.com/yysky/p/10678795.html
Copyright © 2020-2023  润新知