Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt中的多级子菜单_C++_Algorithm_Qt_C++11_Qt5 - Fatal编程技术网

C++ Qt中的多级子菜单

C++ Qt中的多级子菜单,c++,algorithm,qt,c++11,qt5,C++,Algorithm,Qt,C++11,Qt5,我正在尝试在我的Qt应用程序中创建一个多级子菜单。 为此,我使用了带有目录树的向量,示例如下: C:\Users\meine\Main_menu_dir\folder_1\sub1 C:\Users\meine\Main_menu_dir\folder_1\sub2 C:\Users\meine\Main_menu_dir\folder_1\sub2\subsub1 C:\Users\meine\Main_menu_dir\folder_2\sub1 C:\Users\meine\Main_me

我正在尝试在我的Qt应用程序中创建一个多级子菜单。 为此,我使用了带有目录树的向量,示例如下:

C:\Users\meine\Main_menu_dir\folder_1\sub1
C:\Users\meine\Main_menu_dir\folder_1\sub2
C:\Users\meine\Main_menu_dir\folder_1\sub2\subsub1
C:\Users\meine\Main_menu_dir\folder_2\sub1
C:\Users\meine\Main_menu_dir\folder_2\sub1\subsub1
C:\Users\meine\Main_menu_dir\folder_2\sub2\subsub1
C:\Users\meine\Main_menu_dir\folder_2\sub2\subsub2
我使用的boost lib如下所示:

#include "boost/filesystem.hpp"
#include <iostream>
namespace fs = ::boost::filesystem;
通过这种方式,我创建了文件夹_1下的所有子菜单,或者,根据迭代器中的起始点,等效地在主_菜单_dir下创建。递归菜单是我附加子菜单的菜单。也许我应该更新它,比如:

递归菜单=子菜单

如何更改菜单结构以具有以下菜单级别:

 1. Folder_1
    1.1 sub1
    1.2 sub2
       1.2.1 subsub1
 2. Folder_2
    2.1 sub1
       2.1.1 subsub1
       2.1.2 subsub2
....

非常感谢。

将QDiritator与QFileInfo一起使用:

包括 静态空白填充菜单*菜单,常量字符串和路径,常量字符串和前缀={}{ QDirIterator itpath,QDir::Dirs | QDir::Files | QDir::nodotanddot; 整数=0; 当它有下一个{ 数字++; QString newprefix=QString::numbernumber; if!prefix.isEmpty newprefix.prependprefix+。; QFileInfo infoit.next; QString name=newprefix++info.fileName; iInfo.isDir{ QMenu*dirmenu=菜单->添加菜单名; fill_menudirmenu,info.absoluteFilePath,newprefix; } else ifinfo.isFile{ 菜单->添加操作名称; } } } int main argc,char*argv[] { QApplication aargc,argv; QString目录{QStandardPath::WritableLocationQStandardPath::DocumentsLocation}; qmainw窗口; QMenu菜单{Files}; w、 菜单栏->添加菜单和菜单; 填充菜单&菜单,目录; w、 展示; 返回a.exec; }
1.2.1子项1必须与1.2子项2处于同一级别,而不是。1.2.1 subsub1是1.2 sub2的子菜单,我尝试进行迭代过程。我不确定QString目录。这意味着什么?它是否存储路径列表?很抱歉问这个问题,但我在qt是个无事生非的人@在您的例子中,目录是QString目录{C:/Users/meine/Main_menu_dir};
 1. Folder_1
    1.1 sub1
    1.2 sub2
       1.2.1 subsub1
 2. Folder_2
    2.1 sub1
       2.1.1 subsub1
       2.1.2 subsub2
....