点击QTreewidget子项item获取根item(根节点)

构建好QTreewidget后,往往需要点击其中某一个子item获取相应的父item或者根item。因获取根item中包含获取父item,所以在此仅演示如何获取根item。

首先,创建一个槽和信号的连接。itemClicked用于点击某一项时,自动运行相应的checkself。checkself为自己创建的函数。

connect(ui->treeWidget_2,SIGNAL(itemClicked(QTreeWidgetItem*,int)), this,SLOT(checkself(QTreeWidgetItem* ,int)));


其次,checkself实现获取当前item位置,并调用获取根item名称的函数。getsername()。

void MainWindow::checkself(QTreeWidgetItem *item ,int count)
{
    //测试getname
    char sername[255];
    memset(sername, 0, 255);

    getsername(sername,item);


}

最后,调用getsername()获取根item名称。

void MainWindow::getsername(char *sername,QTreeWidgetItem *hItem)
{

        if(!hItem)
                return;
        QTreeWidgetItem * phItem = hItem->parent();    //获取当前item的父item
        if(!phItem)
        {	// 说明是根节点
                memset(sername, 0, MAX_IDENT_LEN);    //MAX_INENT_LEN为自己定义,大小为255
                QString  qstr = hItem->text(0);
                QByteArray ba = qstr.toLatin1();  //实现QString和 char *的转换
                const char *cstr = ba.data();
                strcpy(sername, cstr);
        }
        while (phItem)
        {
                memset(sername, 0, MAX_IDENT_LEN);
                QString  qstr = phItem->text(0);
                QByteArray ba = qstr.toLatin1();    //实现QString和char *的转换
                const char *cstr = ba.data();
                strcpy(sername, cstr);             
                phItem = phItem->parent();
        }
}


你可能感兴趣的:(QT编程)