如何获取菜单的 二级 三级 菜单名

img

img

如图所示 如果我点击 队员1 或队长1 以后 应该如何 获取 选中的菜单项的 二级 三级 菜单名呢

应该是可以通过sender()和parent()函数来获取点击的菜单的上一级菜单,但是好像没法继续往上查找。
建议建立一个映射关系:
QMap<QString,QStringList > mapMenu;
键:QString类型,菜单的的文本内容
值:QStringList类型,存储当前菜单项的所有下一级菜单。
当点击一个菜单时,在响应函数里,根据点击菜单的文本,遍历mapMenu,查找其所对应的父菜单即可,查到父菜单后,可以继续查询父菜单的父菜单。

img

img

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7591806
  • 这篇博客也不错, 你可以看下从零开始学习音视频编程技术(三) 开发环境搭建
  • 除此之外, 这篇博客: 字符串转二进制序列中的 1.字符串转二进制序列 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • void stringToBinary(QString str)
    {
        int bKey[64]; // 二进制
        for (int i = 0; i < 8; ++i)
        {
            int t[8] = {0, 0, 0, 0, 0, 0, 0, 0};
            int k = str.at(i).unicode();
            qDebug() << Q_FUNC_INFO << __LINE__ << "k:" << k;
            for (int j = 0; k != 0; ++j)
            {
                t[j] = k % 2;
                k = k / 2;
            }
            for (int j = 0; j < 8; ++j)
                {
                bKey[i * 8 + j] = t[7 - j];
                qDebug() << Q_FUNC_INFO << __LINE__ << i * 8 + j << "="<<bKey[i * 8 + j];
                }
        }
        #ifndef QT_NO_DEBUG
            // 打印转换后的二进制
            QString strKeyOrigianl;
            for (int i = 0; i < 64; ++i)
                strKeyOrigianl += QString("%1,").arg(bKey[i]);
            qDebug() << Q_FUNC_INFO << __LINE__ << "二进制:" << strKeyOrigianl;
        #endif
    }

            例如:stringToBinary("hebbeKey");

            则输出的二进制为:

    "0,1,1,0,1,0,0,0,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,1,1,0,0,1,0,1,0,1,0,0,1,0,1,1,0,1,1,0,0,1,0,1,0,1,1,1,1,0,0,1,"
  • 您还可以看一下 孙玖祥老师的图解数据结构与算法课程中的 平衡二叉树的特征平衡因子的计算小节, 巩固相关知识点

//获取发送者指针
    QMenu *childMenu=qobject_cast<QMenu *>(sender());
     qDebug()<<"childMenu->objectName()=="<<childMenu->title();