找回密码
 立即注册
收起左侧

怎么获取QTreeWdiget中的当前选中项索引

10
回复
12557
查看
[复制链接]
累计签到:5 天
连续签到:1 天
来源: 2014-12-16 17:35:46 显示全部楼层 |阅读模式
3Qter豆

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

累计签到:597 天
连续签到:1 天
2014-12-16 17:35:47 显示全部楼层
本帖最后由 shasidaran 于 2014-12-19 16:08 编辑
  1. void Widget::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)   //单击treeWidget部件的槽函数
  2. {
  3.     QTreeWidgetItem *parent = item->parent();              //parent用来记录选中项的根级

  4.     if(NULL == parent)                                //需要作此判断,不然用indexOfChild()函数返回子索引值是会出错
  5.         return;
  6.     if(0 == ui->treeWidget->indexOfTopLevelItem(parent))       //一号根的索引
  7.     {
  8.         int index = parent->indexOfChild(item);                            //这里是你需要的返回的选中的子索引项值
  9.         qDebug() << index;                                                 //打印信息
  10.     }
  11.     else if(1 == ui->treeWidget->indexOfTopLevelItem(parent))  //二号根的索引
  12.     {
  13.         int index = parent->indexOfChild(item);
  14.         qDebug() << "2" << index;
  15.     }
  16. }
复制代码
回复

使用道具 举报

累计签到:597 天
连续签到:1 天
2014-12-16 21:01:26 显示全部楼层
void Widget:n_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{
    QTreeWidgetItem *tree;
    tree = ui->treeWidget->currentItem();
    //.....................................................................
}
回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2014-12-18 09:12:10 显示全部楼层
shasidaran 发表于 2014-12-16 21:01
void Widget:n_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{
    QTreeWidgetItem *tre ...

得到的是选中项的指针啊。我想要的是索引值。
回复

使用道具 举报

累计签到:597 天
连续签到:1 天
2014-12-18 15:00:55 显示全部楼层
本帖最后由 shasidaran 于 2014-12-18 15:03 编辑
jinyin 发表于 2014-12-18 09:12
得到的是选中项的指针啊。我想要的是索引值。

恩,没有直接可以用的函数,不过可以稍微调整下代码
  1. void Widget::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
  2. {
  3.     QTreeWidgetItem *parent = item->parent();

  4.     if(NULL == parent)
  5.         return;
  6.     if(0 == ui->treeWidget->indexOfTopLevelItem(parent))
  7.     {
  8.         int index = parent->indexOfChild(item);
  9.         qDebug() << index;
  10.     }
  11.     else if(1 == ui->treeWidget->indexOfTopLevelItem(parent))
  12.     {
  13.         int index = parent->indexOfChild(item);
  14.         qDebug() << "2" << index;
  15.     }
  16. }
复制代码
回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2014-12-19 15:25:05 显示全部楼层
shasidaran 发表于 2014-12-18 15:00
恩,没有直接可以用的函数,不过可以稍微调整下代码

为什么没有呢?MFC上面都有直接用的函数,为什么Qt那么麻烦。。难过..
回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2014-12-19 15:29:59 显示全部楼层
shasidaran 发表于 2014-12-18 15:00
恩,没有直接可以用的函数,不过可以稍微调整下代码

还有就是。对于你上面的代码,我不知道怎么修改。
回复

使用道具 举报

累计签到:597 天
连续签到:1 天
2014-12-19 16:08:01 显示全部楼层
jinyin 发表于 2014-12-19 15:29
还有就是。对于你上面的代码,我不知道怎么修改。

就你提问发的截图看,是一个根级,两个子级,两级深度
按照我上面的代码,实现多个根级,多个子级肯定没问题,但深度如果超过两级,就又麻烦点
回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2014-12-19 18:10:09 显示全部楼层
shasidaran 发表于 2014-12-19 16:08
就你提问发的截图看,是一个根级,两个子级,两级深度
按照我上面的代码,实现多个根级,多个子级肯定没 ...

一般电脑就只有两三个网卡而已。所以应该,可以实现的吧。我试试
回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2014-12-21 17:25:34 显示全部楼层
shasidaran 发表于 2014-12-18 15:00
恩,没有直接可以用的函数,不过可以稍微调整下代码

item=customerTree->currentItem();
    QTreeWidgetItem *parent =item->parent();
    if(parent == NULL)
        return ;
    column = -1;
    QTreeWidgetItemIterator it(parent);
        while (*it) {
            if ((*it)->text(0) ==item->text(0))
                m_nDeviceID=column;
            ++it;
            ++column;
        }

哈哈。完美解决,我的问题。参考你给我的代码。
回复

使用道具 举报

累计签到:597 天
连续签到:1 天
2014-12-22 10:15:09 显示全部楼层
jinyin 发表于 2014-12-21 17:25
item=customerTree->currentItem();
    QTreeWidgetItem *parent =item->parent();
    if(parent == N ...

恩,问题解决了就好。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了